データベースを開かずにSqlServer接続をテストする方法
-
03-07-2019 - |
質問
タイトルはほとんどすべてを物語っています。 SqlConnectionを作成し、データベースを開かずにその接続を確認したいのですが、その時点でどこに接続するのかまだわかりません。それは可能ですか? SqlConnectionクラスには、データベースプロパティで設定したデータベースを開こうとする 'Open'メンバーがあり、設定しなかった場合、SqlServerはマスターデータベースで試行します。問題は、私が接続しようとしているユーザー(MACHINE \ ASPNET)がマスターデータベースではなく、いくつかのデータベース(まだ知りません)にアクセスできることです。
よろしく、 セバ
解決
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