怎样修改数据库的默认语言?

时间:2022-06-04 07:28:10
1)我用的是中文版的Sql2000,
   有一个数据库,它的默认语言原来是英文的。 
   它里面的表不可以显示“中文”,而是显示“????”!
   我现在要将数据库的默认语言改为中文的,是不是用 ALTER 。。。?

   SQL_Latin1_General_CP1_CI_AS  --->  Chinese_PRC_CI_AS 

   应该怎样写Sql语句?举个例子啊!(数据库的名字叫 DB1)

2)经这样将数据库的默认语言从英文改为中文后,
   里面的数据表是否可以显示“中文”了,而不是显示“???????” ?

3)我在外国网站有个空间,它的数据库是英文版的Sql2000,
   
   我想通过上面的方法,将数据库的默认语言改为中文的。
   那么它的数据表是否可以可以显示“中文”,而不是显示“???????” ?
   可以吗?

   谢谢各位! 我的数据库好菜! -~-

8 个解决方案

#1


Alter datebase Alter datebase 数据库 Chinese_PRC_CI_AS

#2


谢谢  我试试!

#3


alter database 数据库 collate 排序规格

#4


但如果你已经有表了:

ALTER TABLE sales 
 ALTER COLUMN payterms nvarchar(100) COLLATE Chinese_PRC_CI_AS

#5


建议使用nvarchar这样也可以存放中文了如:

create database mmm
go
use mmm
go
ALTER DATABASE mmm COLLATE Latin1_General_Ci_Ai
go
create table test (a nvarchar(100))
go
insert test values(N'大力')
go
select * from test where a=N'大力'
select * from test where a='大力'

#6


谢谢了! 我试试!

#7


如果数据库被其他用户使用,无法修改,可以用下面的存储过程关闭用户的使用


/*
关闭用户打开的进程处理
*/
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  '数据库名'

#8


你改用nvarchar也不行吗??

#1


Alter datebase Alter datebase 数据库 Chinese_PRC_CI_AS

#2


谢谢  我试试!

#3


alter database 数据库 collate 排序规格

#4


但如果你已经有表了:

ALTER TABLE sales 
 ALTER COLUMN payterms nvarchar(100) COLLATE Chinese_PRC_CI_AS

#5


建议使用nvarchar这样也可以存放中文了如:

create database mmm
go
use mmm
go
ALTER DATABASE mmm COLLATE Latin1_General_Ci_Ai
go
create table test (a nvarchar(100))
go
insert test values(N'大力')
go
select * from test where a=N'大力'
select * from test where a='大力'

#6


谢谢了! 我试试!

#7


如果数据库被其他用户使用,无法修改,可以用下面的存储过程关闭用户的使用


/*
关闭用户打开的进程处理
*/
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  '数据库名'

#8


你改用nvarchar也不行吗??