質問

私は、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メソッドを使用します。
スキャンは数秒かかりますが、その非常に遅いません。

そこに適切な方法であるが、1つのハックは、ネットワーク内のマシンにポート1433(デフォルトのMSSQLSERVERポート)に接続しようとするだろう場合は、

わからない。

sqlsecurity.comするからツールSQLPing 古いバージョンのダウンロードが有用である可能性があるソースコードが含まれています。

実際には、あなたは、ネットワーク上のすべてのIPアドレスにポート1434 UDPを照会する必要があります。 しかし、ファイアウォールやポリシーが、これをブロックします。

注:1434年は、サーバー上のSQLインスタンスを列挙ところです。 あなたが唯一のデフォルトのインスタンスを使用すると、ポート1433が行います。それはポート2433上の「隠れた」でない限り...

あなたの最良の推測が可能な場合は、事前にリストを作成することであろう。

SQLサーバのネットワークをスキャンすることは、おそらく最高のアイデア(遅い、信頼できない)ではありません。

開始は MSを取得するかもしれませんネットワークモニタとあなたがMSSMSのドロップダウンをクリックしたとき、それが何をするか見ます。

私の推測では、(あなたがそのドロップダウンをクリック遅れて)であることをポーリングローカルネットワークます。

これを言って、私のオフィスでは、それは、企業ネットワーク内の他のサブネット上にあるサーバーを取得することで、のローカルのnetowork以上をポーリングするように見える。

幸運

おそらく、SQLCMD / Lはあなたのために動作します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top