SQL Serverのブラウズ
-
21-08-2019 - |
質問
私は、SQLサーバーに接続するデータベース・アプリケーションを書いています。私は、SQL Management Studioのような同様の接続]ダイアログボックスを実装したいと思います。私はすでにサーバ上のデータベースのリストを取得する方法を見つけたが、私は本当に名前を入力する必要はありませんエンドユーザーがネットワーク上で利用可能なサーバのリストを取得したいのですが/サーバーのIPます。
解決
<のhref = "http://sqlserver2000.databases.aspfaq.com/how-do-i-find-all-the-available-sql-servers-on-my-network.html" のrelから=」 "nofollowをnoreferrer>ここのます:
CREATE PROCEDURE dbo.ListLocalServers
AS
BEGIN
SET NOCOUNT ON
CREATE TABLE #servers(sname VARCHAR(255))
INSERT #servers EXEC master..XP_CMDShell 'OSQL -L'
-- play with ISQL -L too, results differ slightly
DELETE #servers WHERE sname='Servers:'
SELECT LTRIM(sname) FROM #servers WHERE sname != 'NULL'
DROP TABLE #servers
END
代替SQL DMO方法ここ
他のヒント
あなたはこれを行うにはSMOオブジェクトを使用することができます。ローカルネットワークで実行中のすべてのSQLサーバーのリストを取得するにはMicrosoft.SqlServer.Management.Smo.SmoApplication.EnumAvailableSqlServersメソッドを使用します。
スキャンは数秒かかりますが、その非常に遅いません。
わからない。
sqlsecurity.comするからツールSQLPing 古いバージョンのダウンロードが有用である可能性があるソースコードが含まれています。
実際には、あなたは、ネットワーク上のすべてのIPアドレスにポート1434 UDPを照会する必要があります。 しかし、ファイアウォールやポリシーが、これをブロックします。
注:1434年は、サーバー上のSQLインスタンスを列挙ところです。 あなたが唯一のデフォルトのインスタンスを使用すると、ポート1433が行います。それはポート2433上の「隠れた」でない限り...
あなたの最良の推測が可能な場合は、事前にリストを作成することであろう。
SQLサーバのネットワークをスキャンすることは、おそらく最高のアイデア(遅い、信頼できない)ではありません。
開始は MSを取得するかもしれませんネットワークモニタとあなたがMSSMSのドロップダウンをクリックしたとき、それが何をするか見ます。
私の推測では、(あなたがそのドロップダウンをクリック遅れて)であることをポーリングローカルネットワークます。
これを言って、私のオフィスでは、それは、企業ネットワーク内の他のサブネット上にあるサーバーを取得することで、のローカルのnetowork以上をポーリングするように見える。
幸運
おそらく、SQLCMD / Lはあなたのために動作します。