更改SQL中表的架构名称
我想更改数据库中表更改SQL中表的架构名称,sql,sql-server,tsql,schema,Sql,Sql Server,Tsql,Schema,我想更改数据库中表Employees的架构名称。在当前表Employees中,数据库架构名称为dbo我想将其更改为exe。我怎么做 FROM dbo.Employees TO exe.Employees 例如: FROM dbo.Employees TO exe.Employees 从 FROM dbo.Employees TO exe.Employees 到 FROM dbo.Employees TO exe.Employees 我尝试了以下查询: ALTER SCHE
Employees
的架构名称。在当前表Employees
中,数据库架构名称为dbo
我想将其更改为exe
。我怎么做
FROM
dbo.Employees
TO
exe.Employees
例如:
FROM
dbo.Employees
TO
exe.Employees
从
FROM
dbo.Employees
TO
exe.Employees
到
FROM
dbo.Employees
TO
exe.Employees
我尝试了以下查询:
ALTER SCHEMA exe TRANSFER dbo.Employees
FROM
dbo.Employees
TO
exe.Employees
但这给了我一个错误:
FROM
dbo.Employees
TO
exe.Employees
无法更改架构“exe”,因为它不存在或您不存在
请允许
FROM
dbo.Employees
TO
exe.Employees
我错过了什么 在sql中重命名对象时要非常小心。如果您没有完全完成所做的工作,则可能导致依赖关系失败。话虽如此,如果您能够正确访问环境,那么重命名东西很容易(太容易了):
exec sp_rename 'Nameofobject', 'ReNameofobject'
FROM
dbo.Employees
TO
exe.Employees
查看MSDN
FROM
dbo.Employees
TO
exe.Employees
创建架构
:
FROM
dbo.Employees
TO
exe.Employees
然后
FROM
dbo.Employees
TO
exe.Employees
ALTER SCHEMA
:
FROM
dbo.Employees
TO
exe.Employees
或者你可以检查一下,这样
FROM
dbo.Employees
TO
exe.Employees
试试下面的方法
declare @sql varchar(8000), @table varchar(1000), @oldschema varchar(1000), @newschema varchar(1000)
set @oldschema = 'dbo'
set @newschema = 'exe'
while exists(select * from sys.tables where schema_name(schema_id) = @oldschema)
begin
select @table = name from sys.tables
where object_id in(select min(object_id) from sys.tables where schema_name(schema_id) = @oldschema)
set @sql = 'alter schema ' + @newschema + ' transfer ' + @oldschema + '.' + @table
exec(@sql)
end
FROM
dbo.Employees
TO
exe.Employees
创建架构:
IF (NOT EXISTS (SELECT * FROM sys.schemas WHERE name = 'exe'))
BEGIN
EXEC ('CREATE SCHEMA [exe] AUTHORIZATION [dbo]')
END
FROM
dbo.Employees
TO
exe.Employees
改变模式:
ALTER SCHEMA exe
TRANSFER dbo.Employees
FROM
dbo.Employees
TO
exe.Employees
您的代码是:
FROM
dbo.Employees
TO
exe.Employees
我试着回答这个问题
FROM
dbo.Employees
TO
exe.Employees
ALTER SCHEMA exe TRANSFER dbo.Employees
只需编写
创建模式exe
并通过SSMS执行它,我通过以下方式创建了一个新模式:
FROM
dbo.Employees
TO
exe.Employees
- 单击“我的服务器”中对象资源管理器中的安全文件夹
- 右键单击的模式
- 选择“新架构…”
- 命名为我的新模式(在您的案例中为exe)
- 点击OK
FROM
dbo.Employees
TO
exe.Employees
USE (yourservername)
ALTER SCHEMA exe TRANSFER dbo.Employees
在SQL中使用
ALTER SCHEMA
查询时,我总是必须使用括号,否则会收到错误消息。请确保您在SSMS中处于正确的数据库上下文中。得到了与您相同的错误,但我知道模式已经存在。我不知道我是在“大师”的背景下。ALTER在我将上下文更改为数据库后工作。万一有人在寻找较低版本-
FROM
dbo.Employees
TO
exe.Employees
CREATE SCHEMA exe AUTHORIZATION [dbo]
GO
ALTER SCHEMA exe
TRANSFER dbo.Employees
GO
对于SQL Server 2000:
FROM
dbo.Employees
TO
exe.Employees
sp_changeobjectowner@objname='dbo.Employess',@newowner='exe'有吗?架构exe存在吗?没有,我没有创建。我应该怎么做才能创建它呢?运行
createschema
:我看过这篇文章,但有点让人困惑。你能告诉我在我的情况下如何创建模式吗?不幸的是,这在这种情况下不起作用,sp_rename只适用于更改对象的[name]值。您无法使用它更改架构。如果您尝试exec sp_重命名'dbo.Employees','exe.Employees',
您将得到名称[dbo].[exe.Employees]ALTER SCHEMA(SCHEMA名称)TRANSFER(schemaName)。(ObjectName);还要注意,当您更改表的架构时,使用该表的任何视图都不会得到更新。您需要手动更新这些视图中的文本(架构名称)。(叹气…)你能给我举一个在我的情况下如何创建模式的例子吗?你能解释一下什么是sys.scemas和EXEC(…)函数吗?sys.schemas
是一个包含数据库所有模式的表。Exec(“…”)只是运行一个动态SQL调用,在这种情况下需要它,因为CREATE SCHEMA命令必须是查询批处理中的第一条语句,并以动态SQL的方式执行。对于所有表,检查并在单个语句中执行,希望对某些表有所帮助。使用alter SCHEMA似乎非常缓慢。(我在3分钟后停止了它,以便传输一个300行的小表。)相反,我使用select*转换为exe。来自dbo.Employees的员工我必须使用set@sql='alter schema['+@newschema+']transfer['+@oldschema+'].++@table
来确保某些特殊的单词/字符不会导致错误。
FROM
dbo.Employees
TO
exe.Employees