链接的SQL Server和更新的Varchar(MAX)被截断

时间:2012-11-30 19:18:21

标签: sql-server sql-server-2008-r2

我有许多要维护的数据库,我不想为每个环境创建一个脚本,所以我创建了一个与链接服务器结合使用的同义词来为我的更新语句抽象出表。

我的问题是我似乎无法更新超过24-32个字符的varchar(max)字段(并且会有所不同!)

我一直在研究网络,我找不到任何与此直接对话的内容。 (更新:链接到我的工作站,而不是通过网络连接到服务器,本地链接的sql server更新正常。我认为这是主机的一部分的环境问题?可能是某些已定义的限制?)

以下是我如何设置的示例。

--I create some dynamic sql to create the sysnonyms for me.
declare @Synonym varchar(30) = 'sym_Employee'
declare @DBTable = 'Employee'
Select @Stmt = 'create synonym ' + @Synonym + ' for TargetSQLServer.' + @DBName + '.dbo.' + @DBTable + ';'
exec @Stmt

--this statment stops at 24 chars, but the column def is varchar(max)
update sym_employee
set Notes = '012345678901234567890123456789'
where employee_ID = 1

2 个答案:

答案 0 :(得分:0)

您是否曾将lazy schema validation设为true / false

以下链接的更多详情:

http://msdn.microsoft.com/en-us/library/ms178532.aspx

答案 1 :(得分:0)

请确保您已使用varchar数据类型定义了长度,因为当您未使用varchar定义长度时,它采用可能导致问题的默认长度(我猜20个字符)。