Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 临时表列名称敏感度_Sql Server_Collation - Fatal编程技术网

Sql server 临时表列名称敏感度

Sql server 临时表列名称敏感度,sql-server,collation,Sql Server,Collation,我处境艰难。最初,我的数据库目录不区分大小写。我编写愉快的查询,而不考虑变量名的大小写。一切都很好。将数据库迁移到其他主机后,服务器实例级别的排序规则区分大小写。现在我的变量名需要拼写检查和大小写检查 这没关系,因为我很少使用变量 最近出现了一种情况,我需要使用临时表来缓冲来自多个视图的一些结果,然后再在主查询中引用它们。实质上: SELECT * INTO #myview1 FROM vw_myview1 SELECT * INTO #myview2 FROM vw_myview2 及 如果

我处境艰难。最初,我的数据库目录不区分大小写。我编写愉快的查询,而不考虑变量名的大小写。一切都很好。将数据库迁移到其他主机后,服务器实例级别的排序规则区分大小写。现在我的变量名需要拼写检查和大小写检查

这没关系,因为我很少使用变量

最近出现了一种情况,我需要使用临时表来缓冲来自多个视图的一些结果,然后再在主查询中引用它们。实质上:

SELECT * INTO #myview1 FROM vw_myview1
SELECT * INTO #myview2 FROM vw_myview2


如果我的数据库实例具有不区分大小写的排序规则,一切都会很好。但是没有。在我的主要查询中,我会把列名的大小写都搞砸了,WorkID,WorkID,WorkID,随便你怎么说。我有50多个这样的查询需要临时表解决。必须为引用新临时表中的列的每个实例修复大小写,这是非常愚蠢和容易出错的。是否有任何方法可以翻转开关并说忽略此临时表的列名排序规则?

如果必须确保临时表具有所需的列排序规则,有几种方法。这是一个皮塔,但不是那么糟糕。对于50多张桌子来说,这仍然是一个PITA

在SSMS中,使用工具->选项对话框进入“SQL Server对象资源管理器”。“脚本”选项位于此处。将“包含排序规则”选项设置为true。然后编写出表或视图的脚本。将脚本从表转换为所需的临时表语法

您还可以“作弊”并在同一数据库中使用新表,而不是临时表。由你来清理。如果它很大,它将出现在事务日志中


我看到过一些例子,其中insert into使用一个子查询来查询来自where 1=2的源的列名。这将导致包含排序规则。它只创建表。对我来说,它似乎很时髦,而且比编写脚本更乏味。

TL;诺普博士。事实上,即使使用不区分大小写的排序规则,也应该确保对象的大小写是正确的。如果现在正在使用区分大小写的排序规则,则需要更改为不区分大小写的排序规则(在数据库级别)或修复查询。这里没有一个“变通办法”,因为那样的话,排序规则就不会按照设计的那样工作。
SELECT * 
FROM #myview1 v1
JOIN #myview2 v2 on v1.id = v2.id