for-eachとSSMSアプリケーションプログラミングの概念を理解し、この質問を通じてExcelファイルから読み取ることができました。
これは私のために今働いているコードです
Import-Csv C:\sl.csv | ForEach-Object { New-Item $(Encode-Sqlname $_.Name) -ItemType Registration -Value ("server=;$($_.Name);integrated security=true") }
しかし、ユーザー名とパスワードを自動構成するのに問題がありました。つまり、上記のコードをこれに変更することを意味します
Import-Csv C:\sl.csv | ForEach-Object { New-Item $(Encode-Sqlname $_.Name) -ItemType Registration -Value ("server=;$($_.Name);integrated security=false") }
しかし、それは私がスクリプトを提供している人々がセキュリティの目的で好む方法です。(それを実行する方法を知りたいのですが:))さらに強化するために、ミラーリングされたサーバーがかなりあります。 、 お気に入り
server1 / instance2a
server2 / instance2b
だから、登録サーバーウィンドウで知りたいのです
ミラーサーバーとプリンシパルサーバーがあります。つまり、サーバーを登録すると、server1 / isntance2a(mirror)のように表示したいので、ユーザーがログインしたいときに、ミラーサーバーとプリンシパルサーバーのどちらであるかが簡単にわかります。 。したがって、これを決定するためのSQLクエリはこれです。
select mirroring_role_desc from sys.database_mirroring where database_id > 4 and mirroring_state is NOT NULL
これの出力は私にこれを与えるでしょう
mirroring_role_desc
PRINCIPAL
PRINCIPAL
PRINCIPAL
PRINCIPAL
PRINCIPAL
このクエリが実行され、最初にミラーリングされたインスタンスであるかどうかが判断され、次にインスタンス内のプリンシパルデータベースの数が表示されます。ここから出力を取得し、上記の仕様に従って登録済みサーバー名を表示します。
ただし、フェイルオーバーが発生した場合、登録されたサーバー名は現在ミラーリングされていますが、 server1 / instance2aとして表示されます。これで、このスクリプトを動的にして、ユーザーがいつでも実行できるようにしようとしていることがわかります。または、2週間ごとなどに実行されます(今のところスケジュールは気にしないでください)