0

この文は、「MyDatabase」データベースがオンラインであることを示しています。

select databasepropertyex('MyDatabase', 'Status')

別のサーバーからデータベースをチェックする必要がある場合はどうすればよいですか? 既にリンク サーバーがあるとします。呼び出しは次のようになります。

select databasepropertyex('[192.168.111.33].MyOtherDatabase', 'Status')

しかし、それは機能しません、誰もこれを確認する方法を知っていますか? ありがとうございました。

4

2 に答える 2

0

通常は、データベースへの接続を試み、接続が失敗した場合はエラーをトラップします。ただし、ネットワークの設定とセキュリティによっては、データベースサーバーに直接接続できない場合があります正確にそれを行う方法は、使用する言語とプロバイダーによって異なります。

接続文字列のオンライン例>

SQL Server 2008データベースが接続を受け入れることができるかどうかを確認するには、代わりにCollat​​ionプロパティを確認してください。私はそれがどれほど奇妙に聞こえるか知っていますが、それは文書化された方法です。

ONLINEステータスは、データベースが開かれているときに返される場合があり、まだ回復されていません。データベースが接続を受け入れることができる時期を特定するには、DATABASEPROPERTYEXの照合プロパティを照会します。

たとえば、多くのデータベースサーバーは、1つを除くすべてのIPアドレスからの接続を拒否するように設定されています。これは、Webベースのセットアップで特に一般的です。これは基本的なセキュリティ対策です。その場合、このように接続すると(すぐ下)機能します。アプリケーションサーバーまたはWebサーバーのコードは、データベースサーバーに接続しようとし、失敗した場合はエラーを返します。

Your server      -->  Application server   -->  Database server
or workstation        or web server

ただし、データベースサーバーは、アプリケーションサーバーまたはWebサーバーからの接続のみを受け入れるように構成されているため、このように接続することはできません。

Your server      ---------------------------->  Database server
or workstation        
                      Application server
                      or web server
于 2013-01-30T16:25:17.247 に答える
0

パススルー クエリとして実行する必要がある場合があります。

OPENQUERY ( [192.168.111.33] ,'select databasepropertyex(MuOtherDatabase, ''Status'')' )

(すでに設定されているリンクサーバーが[192.168.111.33]と呼ばれていると仮定すると、上記で暗示されているように-IPを使用するための疑わしい命名規則のように思えますか?)

于 2013-01-30T16:31:11.913 に答える