我设法掌握了 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") }
但这没关系,这就是我交付脚本的人喜欢的方式,出于安全目的。(即使我想知道如何完成它:))现在为了进一步增强,有相当多的镜像服务器, 喜欢
服务器 1/实例 2a
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,即使它现在是镜像的,所以现在你可以理解我正在尝试使这个脚本动态化,这样用户就可以在他想要的时候运行它或者它每两周运行一次或类似的(暂时不用担心时间表)