Ian*_*oyd 4 sql-server sql-server-2000 linked-server
尝试运行跨服务器更新:
UPDATE ASILIVE.CustomerManagementSystem.dbo.Sessions
SET ASILIVE.CustomerManagementSystem.dbo.Sessions.VarianceAmount=Variances.VarianceAmount
FROM ASILIVE.CustomerManagementSystem.dbo.Sessions
INNER JOIN Variances
ON ASILIVE.CustomerManagementSystem.dbo.Sessions.SessionGUID = Variances.SessionGUID
WHERE ASILIVE.CustomerManagementSystem.dbo.Sessions.VarianceAmount <> Variances.VarianceAmount
Run Code Online (Sandbox Code Playgroud)
给出错误:
Msg 117, Level 15, State 2, Line 5
The number name 'ASILIVE.CustomerManagementSystem.dbo.Sessions' contains
more than the maximum number of prefixes. The maximum is 3.
Run Code Online (Sandbox Code Playgroud)
是什么赋予了?
不重要的研究:
我试着随意别名s:
UPDATE ASILIVE.CustomerManagementSystem.dbo.Sessions s
SET s.VarianceAmount=Variances.VarianceAmount
FROM ASILIVE.CustomerManagementSystem.dbo.Sessions s
INNER JOIN Variances
ON s.SessionGUID = Variances.SessionGUID
WHERE s.VarianceAmount <> Variances.VarianceAmount
Run Code Online (Sandbox Code Playgroud)
但这不起作用:
Msg 117, Level 15, State 2, Line 5
The number name 'ASILIVE.CustomerManagementSystem.dbo.Sessions' contains
more than the maximum number of prefixes. The maximum is 3.
Run Code Online (Sandbox Code Playgroud)
哈姆林建议增加括号:
UPDATE [ASILIVE].[CustomerManagementSystem].dbo.Sessions
SET [ASILIVE].[CustomerManagementSystem].dbo.Sessions.DisciplineVarianceAmount=DisciplineVariances.VarianceAmount
FROM [ASILIVE].[CustomerManagementSystem].dbo.Sessions
INNER JOIN DisciplineVariances
ON [ASILIVE].[CustomerManagementSystem].dbo.Sessions.SessionGUID = DisciplineVariances.SessionGUID
WHERE [ASILIVE].[CustomerManagementSystem].dbo.Sessions.DisciplineVarianceAmount <> DisciplineVariances.VarianceAmount
Run Code Online (Sandbox Code Playgroud)
但这不起作用:
Msg 117, Level 15, State 2, Line 5
The number name 'ASILIVE.CustomerManagementSystem.dbo.Sessions' contains
more than the maximum number of prefixes. The maximum is 3.
Run Code Online (Sandbox Code Playgroud)
通常,您需要至少在链接服务器名称周围添加括号.
[ASILIVE].[CustomerManagementSystem].dbo.Sessions
Run Code Online (Sandbox Code Playgroud)
编辑 - 另外试试这个
UPDATE S
SET DisciplineVarianceAmount = Variances.VarianceAmount
FROM [ASILIVE].[CustomerManagementSystem].dbo.Sessions as S
INNER JOIN Variances ON S.SessionGUID = Variances.SessionGUID
WHERE S.VarianceAmount <> Variances.VarianceAmount
Run Code Online (Sandbox Code Playgroud)
你真的很喜欢打字吗?:-)
UPDATE s
SET s.DisciplineVarianceAmount = v.VarianceAmount
FROM [ASILIVE].[CustomerManagementSystem].dbo.Sessions AS s
INNER JOIN dbo.Variances AS v
ON s.SessionGUID = v.SessionGUID
AND s.VarianceAmount <> v.VarianceAmount;
Run Code Online (Sandbox Code Playgroud)
请注意,如果当前存在差异金额,您可能需要描述此处的操作NULL.
| 归档时间: |
|
| 查看次数: |
8758 次 |
| 最近记录: |