Как проверить соединение SqlServer, не открывая базу данных
-
03-07-2019 - |
Вопрос
Название в значительной степени говорит само за себя.Я хочу создать SqlConnection, а затем проверить это соединение, не открывая базу данных, потому что на данный момент я еще не знаю, к чему я буду подключаться.Возможно ли это сделать?В классе SqlConnection есть член Open, который пытается открыть базу данных, которую вы установили в свойстве Database, и если вы его не установили, SqlServer пытается использовать главную базу данных.Дело в том, что пользователь, с которым я пытаюсь соединиться (MACHINE\ASPNET), имеет доступ к некоторым базам данных (о которых я еще не знаю), а не к главной базе данных.
С уважением, Себа
Решение
Подключитесь к временной базе данных.Доступ к базе данных tempdb есть у всех, поэтому вы сможете пройти аутентификацию для доступа.Позже, когда вы узнаете фактическую базу данных, вы сможете изменить это свойство для подключения к нужной базе данных.
Другие советы
Я не уверен, что это то, что вам нужно.
Проверьте, есть ли у пользователя доступ к базе данных в Sql Server 2005.
SELECT HAS_DBACCESS('Northwind');
HAS_DBACCESS возвращает информацию о том, есть ли у пользователя доступ к указанной базе данных (BOL).
Найти все базы данных, к которым у текущего пользователя есть доступ.
SELECT [Name] as DatabaseName from master.dbo.sysdatabases
WHERE ISNULL(HAS_DBACCESS ([Name]),0)=1
ORDER BY [Name]
Если вам нужно знать только, активна ли служба, вы можете попытаться подключиться к порту через сокет, чтобы проверить, открыт ли он.
Просто любопытно...Какую информацию вы сможете проверить, если не знаете точную базу данных, к которой вам нужно подключиться?Многие вещи, которые могут пойти не так с «реальной» базой данных, невозможно будет проверить с помощью такого рода тестового соединения, например подключение или безопасность.
Я не знаю, получили ли вы ответы, но поскольку мы все ищем здесь ответы, я надеюсь, что это то, что вы искали.
dim con as new sqlconnection
con.connectionstring="<<put your conn string here>>"
'try...catch block fires exception if the con is not successfully opened
try
con.open()
catch ex as exception
msgbox ex.message
end try