insert into tbPromised_Detail(SourceSystem, ProjectCode, ApplicationDocumentNo, CostCenter, NaturalCode, Amount, AppEmployeeID, Description, VoucherNumber, CompanyCode, FinancialYear, ChangeType, VoucherLine, lastUpdateTime, BillDate, SAPDocumentNO)
select 'Z002',ProjectCode,RcId,RcCostCenter,SAPSubjectSecondld,FactMoney,employeeId,'','',(case when CompanyId='C001' then '1000' when CompanyId='C002' then '1100' else '1200' end) as companyCode,YEAR(getdate()),'新增承诺','',GETDATE(),CONVERT(varchar(100), SubmitDate,23),'' from
OPENROWSET('SQLOLEDB', 'PHSHABT01'; 'deploy'; 'deploy', ExpenseReport.dbo.vw_SubmitedNotAccounting)
where not exists (select * from tbPromised_Detail where A.RcCostCenter=tbPromised_Detail.CostCenter and A.ProjectCode=tbPromised_Detail.ProjectCode and A.RcId=tbPromised_Detail.ApplicationDocumentNo )
报错:Msg 468, Level 16, State 9, Line 3
Cannot resolve the collation conflict between "Chinese_PRC_CI_AS" and "SQL_Latin1_General_CP1_CI_AS" in the equal to operation.
大神们,咱解决这个问题?
------解决思路----------------------
当前查询所在库和ExpenseReport这个库的排序规则不一样吧。
------解决思路----------------------
参考下:
http://www.cnblogs.com/shuqian/archive/2012/03/16/2397642.html
------解决思路----------------------
搜一下SQL COLLATE 看看解决方案。
总体就2种解决方案:
1、修改排序规则,不过得看你需要的是什么级别的,库级?表级?字段级?
2、在T-SQL里带上COLLATE去关联:key1 COLLATE Chinese_PRC_CI_AS =key2 COLLATE Chinese_PRC_CI_AS
------解决思路----------------------
你跑下脚本,然后把结果贴出来
-- 查询Target库排序规则
USE yourCurrentDB
GO
SELECT CONVERT (varchar, SERVERPROPERTY('collation'))
-- 查询Target表排序规则
select collation from syscolumns where id=object_id(N'dbo.tbPromised_Detail')
-- 查询Source库排序规则
USE ExpenseReport
GO
SELECT CONVERT (varchar, SERVERPROPERTY('collation'))
-- 查询Source表排序规则
select collation from syscolumns where id=object_id(N'dbo.vw_SubmitedNotAccounting')