把SQL AZURE数据库备份到本地,备份工具是RED GATE的sql azure backup 2.6.1.131
出现两个错误
错误1:"id"无效
查看是出在
exists
(select 1 from G工单任务 b where b.G故障处理措施ID=gz.id
中的gz.id上
错误2:
无法绑定由多个部分组成的标识符
出在
SELECT C.ID
,C.K窗口类名称,
C.M模块名称,
c.P排序编号,
c.M模块类型,
C.S上级ID,
C.C程序集名称,
c.T图标编号
FROM X系统模块 C
中的c.P排序编号,c.M模块类型,c.T图标编号
以上都是存储过程中的错误
百思不得其解,因为存储过程是从本地同步上去的,到网上查也没查出符合的答案.
最后解决方法是,把以上存储过程全部大写,执行通过.
再回过头来仔细比对,发现错误的地方都是名称大小写和原始不匹配.
错误1:gz.id中的id表中是大写的ID列
错误2:FROM X系统模块 C别名是大写的C
补充:
刚刚又发现新的问题
SELECT * FROM SYS.SYSCOLUMNS语句在SQL AZURE上执行通过,在备份到本地的数据库失败,说找不到对象.
改成SELECT * FROM sys.syscolumns就没问题.
结合前面的问题我想应该是数据库排序规则不对
select * from sys.databases
果然我数据库是
Chinese_PRC_CS_AS
这是区分大小写的
我用
ALTER DATABASE [db] COLLATE Chinese_PRC_CI_AS
后就没问题了
但我就不明白,SQL AZURE上我数据库也是
Chinese_PRC_CS_AS
执行却没问题,也就是说,在SQL AZURE上Chinese_PRC_CS_AS=Chinese_PRC_CI_AS