MS SQL 2000数据库
排序规则 Latin1_General_BIN
结果中文成乱码搜资料,修改排序规则
ALTER DATABASE mmm COLLATE Chinese_Taiwan_Stroke_BIN
报错数据库不能修改的,也不插入数据,只读数据做报表
问一下怎样将Latin1编码转换成UTF-8开发环境 VS 2005
排序规则 Latin1_General_BIN
结果中文成乱码搜资料,修改排序规则
ALTER DATABASE mmm COLLATE Chinese_Taiwan_Stroke_BIN
报错数据库不能修改的,也不插入数据,只读数据做报表
问一下怎样将Latin1编码转换成UTF-8开发环境 VS 2005
解决方案 »
- 简单正则 急急急!!!!
- 页面Button按钮的属性
- ~~~~~~~用indexOf为什么获取不到这种字符串的索引值?
- 读取远程的页面文件内容,但需要搜索结果的页面,有谁知道怎么实现吗?
- vs2005 web 发布出错。。。请高手赐教
- 在asp.net 中使用百度搜索代码,搜索汉字时提交到百度的是乱码
- 请各位高手帮帮忙:怎样实现TreeView 的分级加载?
- 请问如何用ASP.NET实现下载功能?
- asp.net,大家伙跟着它累不累?
- 我想把数据库中某属性值赋给下拉菜单,如何实现,下面的代码有错误,不知道如何该
- 异步加载Treeview的加号事件
- 如何browse一个file后,从路径中直接得到filename,可以直接显示在
是这样写:
alter database 数据库名 collate Chinese_PRC_CS_AS ?
为什么报错呢?报错如下:
未能排它地锁定数据库以执行该操作。
ALTER DATABASE 失败。无法将数据库 '' 的默认排序规则设置为 'Chinese_PRC_CI_AS'。
还有更改数据库的排序规则会不会对数据库中的数据信息造成影响。 use master
go
alter database 数据库名 collate Chinese_PRC_CS_AS --如果上述方法无效,改用:
/*
断开所有用户打开的连接
*/
use master
go
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_killspid]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[p_killspid]
GO
create proc p_killspid
@dbname varchar(200) --要关闭进程的数据库名
as
declare @sql nvarchar(500)
declare @spid nvarchar(20)
declare #tb cursor for
select spid=cast(spid as varchar(20)) from master..sysprocesses where dbid=db_id(@dbname)
open #tb
fetch next from #tb into @spid
while @@fetch_status=0
begin
exec('kill '+@spid)
fetch next from #tb into @spid
end
close #tb
deallocate #tb
go
--用法
exec p_killspid '数据库名'
go
alter database 数据库名 collate Chinese_PRC_CS_AS 数据库的排序规则是改过来了, 但是数据库中所有表中字符类型的排序规则又由开始的<database default>变成了Compatibility_198_804_30001,这该怎么改呢? --用这个,不过,主键字段不能修改
declare tb cursor for
SELECT sql='alter table ['+d.name
+'] alter column ['+a.name+'] '+b.name
+ '('+cast(a.length*2 as varchar)+')'
+' collate Chinese_PRC_CS_AS'
FROM syscolumns a
left join systypes b on a.xtype=b.xusertype
inner join sysobjects d on a.id=d.id and d.xtype='U' and d.name<>'dtproperties'
where
b.name like '%char'
and
not exists(SELECT 1 FROM sysobjects where xtype='PK' and name in (
SELECT name FROM sysindexes WHERE indid in(
SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid
))) --主键不能修改
order by d.name,a.name
declare @sql varchar(1000)
open tb
fetch next from tb into @sql
while @@fetch_status = 0
begin
exec(@sql)
fetch next from tb into @sql
end
close tb
deallocate tb
或者试试导入导出
sql200企业管理器
--右键要你的数据库
--所有任务
--导出数据
--目标数据库,数据库选择<新建>,新建一个空库(或者事先建好库,特别注意排序规则)
--然后选择"在两个SQL数据库之间复制数据和对象"
--将"使用排序规则"的选择取消,其他根据你的需要选择
--最后完成. 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wyx714/archive/2009/01/06/3720660.aspx
这个我也知道,但四十几个数据库,而且又是动态的,这个不方便维护
实在没办法只好复制数据库修改排序规则这个笨方法了