Как проверить соединение SqlServer, не открывая базу данных

StackOverflow https://stackoverflow.com/questions/154485

Вопрос

Название в значительной степени говорит само за себя.Я хочу создать 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top