我在两台不同的机器上有两个数据库。两个数据库都与Link服务器连接。我从另一个数据库中定义的一个数据库调用存储过程。
在数据库A中: -
我有一个名为SP_1的存储过程,
cannot resolve the Symbol"fragment_main
在数据库B中: -
我从数据库B调用数据库A的 SP_1 。
如果我将超过8000个字符传递给 SP_1 ,则接受该参数。
如果我将15000个字符串传递给 SP_1 ,那么理想情况下,只有8000个字符应该能够传递给 SP_1 ,但它会占用所有15000个字符。
我很困惑。 为什么参数的值不会被截断为8000个字符?
提前致谢。
答案 0 :(得分:0)
我刚在两个测试数据库TEST_TT_1
和TEST_TT_2
上运行了此测试脚本。打印出来:
15000
和
8000
因此它肯定会截断传递给存储过程的变量。
USE TEST_TT_1;
GO
CREATE PROCEDURE dbo.test_proc
@tp VARCHAR(8000)
AS
SELECT LEN(@tp);
GO
USE TEST_TT_2;
DECLARE @tv VARCHAR(MAX);
SET @tv=REPLICATE(CAST('a' AS VARCHAR(MAX)), 15000);
SELECT LEN(@tv);
EXEC TEST_TT_1.dbo.test_proc @tv;
GO
USE TEST_TT_1;
GO
DROP PROCEDURE dbo.test_proc;
GO