新しいリンク サーバーを作成するストアド プロシージャがあります。
問題は、InstanceName が "my-pc" ("-" を含む) であるため、LinkedServer が正しく生成されないことです。私の推測では、C# コードからパラメーターを渡す方法に問題があると思われますが、その解決策は見つかりませんでした。
私の手順は次のとおりです。
CREATE PROCEDURE
[test].[createlinkedserver]
(
@InstanceName AS SYSNAME
)
AS
BEGIN
EXECUTE sys.sp_addlinkedserver
@server = N'Server' ,
@srvproduct = N'' ,
@provider = N'SQLNCLI' ,
@datasrc = [@InstanceName] ,
@location = NULL ,
@provstr = NULL ,
@catalog = NULL
EXECUTE master.dbo.sp_serveroption
@server = N'Server' ,
@optname = N'rpc out' ,
@optvalue = N'true'
EXECUTE master.dbo.sp_serveroption
@server = N'Server' ,
@optname = N'remote proc transaction promotion' ,
@optvalue = N'true'
END
そして、C# からストアド プロシージャを呼び出します。
DbCommand Command = CovertixDB.Database.GetStoredProcCommand("test.createlinkedserver");
CovertixDB.Database.AddInParameter(Command, "InstanceName", DbType.String, instanceName);
CovertixDB.Database.ExecuteNonQuery(Command);