我有一个创建新链接服务器的存储过程。
问题是我的 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);