Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.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标识符存在问题_Sql Server - Fatal编程技术网

Sql server 多部分sql标识符存在问题

Sql server 多部分sql标识符存在问题,sql-server,Sql Server,我已经成功地将一个运行SQLServer2005DB的网站迁移到一个运行SQLServer2008R2的新服务器上,除了一件事之外,其他一切都正常 创建表时使用了两种不同的模式(我不知道为什么)。因此,您必须使用多部分标识符(如schemaname.tablename)调用表,但在网站sql代码中,它们调用所有内容时使用的都是tablename或schemaname.tablename,这在以前是有效的,但现在不是 该网站本身是一个巨大的烂摊子,很难找到和修改所有的sql查询 有人知道我如何更改

我已经成功地将一个运行SQLServer2005DB的网站迁移到一个运行SQLServer2008R2的新服务器上,除了一件事之外,其他一切都正常

创建表时使用了两种不同的模式(我不知道为什么)。因此,您必须使用多部分标识符(如schemaname.tablename)调用表,但在网站sql代码中,它们调用所有内容时使用的都是tablename或schemaname.tablename,这在以前是有效的,但现在不是

该网站本身是一个巨大的烂摊子,很难找到和修改所有的sql查询

有人知道我如何更改它,使其允许再次使用tablename进行查询吗?

您可以使用它在同一数据库中的模式之间移动安全性

此脚本将“myschema”中的表、存储过程和视图传输到“dbo”模式。修改以满足您的需要并运行此TSQL脚本:

SELECT 'ALTER SCHEMA dbo TRANSFER ' + s.Name + '.' + o.Name 
FROM sys.objects o 
INNER JOIN sys.schemas s on o.schema_id = s.schema_id 
WHERE s.Name = 'myschema'
AND (o.Type = 'U' OR o.Type = 'P' OR o.Type = 'V')

然后将输出复制到另一个查询窗口并运行。(小心,在移动前检查所有内容是否正确)

实现所需功能的一种方法是让不同的程序使用不同的身份登录。然后可以使用或SSMS UI设置每个用户的默认模式。默认模式指定当用户不使用前缀时使用的模式

如果要合并模式,另一件要做的事情是为模式中要删除的每个对象定义,这样随着时间的推移,最终可以将内容合并为一个干净的模式