现在附加到一个新数据库服务器上去,都变成区分大小写了,搞得好多存储过程都不能运行了,因为当时写程序没有在意这点,就同一个变量名,有时大写有时小写;
有什么办法能不修改这些存储过程里的变量,能让软件跳过这些检测运行起来?
修改变量工程量太大了。
6 个解决方案
#1
试一下这个
alter database 数据库名称 collate Chinese_PRC_CI_AS
#2
执行这句没用,随便打开一个以前有大小写变量没区分的存储过程,都报错。
#3
要完全正常, 要修正实例的排序规则, 这个过程也比较麻烦。
重新安装一个 SQL Server2014 吧,设置好之后原来的SQL Server2008 服务停掉。
https://blog.csdn.net/yenange/article/details/50549937
安装时注意别把排序规则再搞错了。保证是: Chinese_PRC_CI_AS
重新安装一个 SQL Server2014 吧,设置好之后原来的SQL Server2008 服务停掉。
https://blog.csdn.net/yenange/article/details/50549937
安装时注意别把排序规则再搞错了。保证是: Chinese_PRC_CI_AS
#4
\妥妥的解决广寒确实是要改实例排序规则
#5
这个服务器上还有其他ERP和管理软件在用,不是说换就换的啊;所以才这么郁闷;
唉,看来只能一个一个的改存储过程的变量了,吸取教训,以后SQL 脚本也要注重大小写了。
唉,看来只能一个一个的改存储过程的变量了,吸取教训,以后SQL 脚本也要注重大小写了。
#6
写一个函数吧
Create FUNCTION [IsTheSame]
(@Text1 AS Text,
@Text2 AS Text
)
RETURNS bit AS
BEGIN
declare @TmpChar1 varchar(10)
declare @TmpChar2 varchar(10)
DECLARE @i int
set @i=1
while @i<=datalength(@Text1)
begin
set @TmpChar1=substring(@Text1,@i,1)
set @TmpChar2=substring(@Text2,@i,1)
if ASCII(@TmpChar1)<>ASCII(@TmpChar2)
begin
return 1
end
set @i=@i+1
end
RETURN 0
END
亲测有效 0表示相同,1表示不同
Create FUNCTION [IsTheSame]
(@Text1 AS Text,
@Text2 AS Text
)
RETURNS bit AS
BEGIN
declare @TmpChar1 varchar(10)
declare @TmpChar2 varchar(10)
DECLARE @i int
set @i=1
while @i<=datalength(@Text1)
begin
set @TmpChar1=substring(@Text1,@i,1)
set @TmpChar2=substring(@Text2,@i,1)
if ASCII(@TmpChar1)<>ASCII(@TmpChar2)
begin
return 1
end
set @i=@i+1
end
RETURN 0
END
亲测有效 0表示相同,1表示不同
#1
试一下这个
alter database 数据库名称 collate Chinese_PRC_CI_AS
#2
执行这句没用,随便打开一个以前有大小写变量没区分的存储过程,都报错。
#3
要完全正常, 要修正实例的排序规则, 这个过程也比较麻烦。
重新安装一个 SQL Server2014 吧,设置好之后原来的SQL Server2008 服务停掉。
https://blog.csdn.net/yenange/article/details/50549937
安装时注意别把排序规则再搞错了。保证是: Chinese_PRC_CI_AS
重新安装一个 SQL Server2014 吧,设置好之后原来的SQL Server2008 服务停掉。
https://blog.csdn.net/yenange/article/details/50549937
安装时注意别把排序规则再搞错了。保证是: Chinese_PRC_CI_AS
#4
\妥妥的解决广寒确实是要改实例排序规则
#5
这个服务器上还有其他ERP和管理软件在用,不是说换就换的啊;所以才这么郁闷;
唉,看来只能一个一个的改存储过程的变量了,吸取教训,以后SQL 脚本也要注重大小写了。
唉,看来只能一个一个的改存储过程的变量了,吸取教训,以后SQL 脚本也要注重大小写了。
#6
写一个函数吧
Create FUNCTION [IsTheSame]
(@Text1 AS Text,
@Text2 AS Text
)
RETURNS bit AS
BEGIN
declare @TmpChar1 varchar(10)
declare @TmpChar2 varchar(10)
DECLARE @i int
set @i=1
while @i<=datalength(@Text1)
begin
set @TmpChar1=substring(@Text1,@i,1)
set @TmpChar2=substring(@Text2,@i,1)
if ASCII(@TmpChar1)<>ASCII(@TmpChar2)
begin
return 1
end
set @i=@i+1
end
RETURN 0
END
亲测有效 0表示相同,1表示不同
Create FUNCTION [IsTheSame]
(@Text1 AS Text,
@Text2 AS Text
)
RETURNS bit AS
BEGIN
declare @TmpChar1 varchar(10)
declare @TmpChar2 varchar(10)
DECLARE @i int
set @i=1
while @i<=datalength(@Text1)
begin
set @TmpChar1=substring(@Text1,@i,1)
set @TmpChar2=substring(@Text2,@i,1)
if ASCII(@TmpChar1)<>ASCII(@TmpChar2)
begin
return 1
end
set @i=@i+1
end
RETURN 0
END
亲测有效 0表示相同,1表示不同