一部のサーバーに必要な SQL Server エイリアス エントリを自動的に作成する小さなアプリがあります。コードの大部分は次のようになります。
private static void SetAlias(string aliasName, string server, string protocol, int? port)
{
var scope = new ManagementScope(@"\\.\root\Microsoft\SqlServer\ComputerManagement10");
try
{
scope.Connect();
}
catch
{
scope = new ManagementScope(@"\\.\root\Microsoft\SqlServer\ComputerManagement");
}
var clientAlias = new ManagementClass(scope, new ManagementPath("SqlServerAlias"), null);
clientAlias.Get();
foreach (ManagementObject existingAlias in clientAlias.GetInstances())
{
existingAlias.Get();
if (String.Equals((String)existingAlias.GetPropertyValue("AliasName"), aliasName))
{
UpdateAlias(existingAlias, aliasName, server, protocol, port);
return;
}
}
// create new
ManagementObject newAlias = clientAlias.CreateInstance();
UpdateAlias(newAlias, aliasName, server, protocol, port);
newAlias.Put();
}
private static void UpdateAlias(ManagementObject alias, string aliasName, string server, string protocol, int? port)
{
alias.SetPropertyValue("AliasName", aliasName);
alias.SetPropertyValue("ServerName", server);
alias.SetPropertyValue("ProtocolName", protocol);
alias.SetPropertyValue("ConnectionString", port != null ? port.ToString() : string.Empty);
}
これにより、32 ビット OS で必要なエントリが正しく作成されますが、x64 OS では、エイリアスを 64 ビット SQL Server クライアント構成にも追加する必要があります。
これを行う方法はありますか?
ありがとう。