我不确定使用
创建临时表时使用了哪种排序规则create table #temp
( object varchar(16) COLLATE database_default
, lev int )
E.g。这是使用TempDB排序规则还是用户数据库排序规则?
答案 0 :(得分:1)
根据Ben的回答,我做了以下几点。这清楚地表明使用了用户数据库的排序规则。
/* Find Collation of SQL Server Database */
SELECT DATABASEPROPERTYEX('objective', 'Collation')
-- Latin1_General_BIN2
SELECT DATABASEPROPERTYEX('tempDB', 'Collation')
-- SQL_Latin1_General_CP1_CI_AS
GO
/* Find Collation of SQL Server Database Table Column */
USE objective
GO
create table #temp
( id int
, word varchar(10))
select collation_name
from tempdb.sys.columns
where OBJECT_ID = object_id('tempdb.dbo.#temp');
-- SQL_Latin1_General_CP1_CI_AS
create table #temp2
( id int
, word varchar(10) COLLATE database_default)
select collation_name
from tempdb.sys.columns
where OBJECT_ID = object_id('tempdb.dbo.#temp2');
-- Latin1_General_BIN2
答案 1 :(得分:0)
它使用tempdb的排序规则。我通过将我的一个用户数据库的排序规则设置为Albanian_BIN(特别是与tempdb的排序规则不同)并运行:
,在我的本地计算机上进行了测试create table #foo (a varchar(100), b nvarchar(100));
select collation_name
from tempdb.sys.columns
where OBJECT_ID = object_id('tempdb.dbo.#foo');
这有两行,两行都反映了tempdb的整理。