请确认TempDB

时间:2017-01-24 02:51:58

标签: sql-server collation

我不确定使用

创建临时表时使用了哪种排序规则
create table #temp 
( object varchar(16) COLLATE database_default
, lev int ) 

E.g。这是使用TempDB排序规则还是用户数据库排序规则?

2 个答案:

答案 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的整理。