Я использую библиотеку ActiveX Data Objects 6.1 в Excel VBA для доступа к базе данных SQL Server 2012. Я могу нормально подключаться и выполнять запросы, но после подключения, похоже, невозможно определить, к какому серверу подключен объект connection
, поскольку свойство connectionString
не возвращает ту же строку, которая использовалась для открытия соединения:
Public Sub connectDB()
Dim conn As New Connection
Dim strServer As String, strDatabase As String, strUser As String, strPassword As String
strServer = "****": strDatabase = "****": strUser = "****": strPassword = "****"
conn.ConnectionString = "Driver={SQL Server};Server=" & strServer & ";Database=" & strDatabase & ";UID=" & strUser & ";PWD=" & strPassword
Debug.Print conn.ConnectionString
conn.Open
Debug.Print conn.ConnectionString
End Sub
Выходы:
Driver={SQL Server};Server=****;Database=****;UID=****;PWD=****
Provider=MSDASQL.1;
Другими словами, как только соединение открыто, свойство connectionString
сбрасывается на что-то бесполезное. Connection.DefaultDatabase
возвращает базу данных, но нет способа определить сервер по объекту connection
.
Если у меня есть код, которому передается объект подключения во время выполнения, было бы неплохо иметь возможность видеть, к какому серверу он подключен, без необходимости выполнять sys.dm_exec_connections
(что кажется пустой тратой ресурсов, и вам нужны довольно высокие разрешения для его запуска) . Есть ли способ?
connection
из другого кода, который мне иначе не нужно изменять, было бы лучше просто получить строку подключения или сервер из подключения. - person aucuparia   schedule 11.08.2015true
. - person EngJon   schedule 11.08.2015