Как проверить соединение SqlServer без открытия базы данных
Название в значительной степени говорит обо всем. Я хочу создать SqlConnection, а затем проверить это соединение, не открывая базу данных, потому что в тот момент я еще не знаю, где я буду подключаться. Возможно ли это сделать? Класс SqlConnection имеет член 'Open', который пытается открыть базу данных, которую вы установили в свойстве Database, и, если вы ее не установили, SqlServer попытается с главной базой данных. Дело в том, что пользователь, с которым я пытаюсь подключиться (MACHINE\ASPNET), имеет доступ к некоторым базам данных (которые я пока не знаю), а не к главной базе данных.
С уважением, Себа
5 ответов
Подключитесь к temp db. У всех есть доступ к базе данных 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