有一个数据库,它的默认语言原来是英文的。
它里面的表不可以显示“中文”,而是显示“????”!
我现在要将数据库的默认语言改为中文的,是不是用 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
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='大力'
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 '数据库名'
/*
关闭用户打开的进程处理
*/
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
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='大力'
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 '数据库名'
/*
关闭用户打开的进程处理
*/
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也不行吗??