【问题标题】:Syntax error when trying to change schema in SQL Server database尝试更改 SQL Server 数据库中的架构时出现语法错误
【发布时间】:2013-01-08 01:56:29
【问题描述】:

我正在尝试重命名 SQL Server 2005 上旧数据库中的十几个表的架构。我使用的是 SQL Server Management Studio Express 9.0 版。根据此处找到的详细建议以及其他网站上的几个论坛,我一直在尝试这个简单的命令:

ALTER SCHEMA newschemaname TRANSFER oldschemaname.table1

我一直收到这个错误:

消息 156,第 15 级,状态 1,第 1 行
关键字“SCHEMA”附近的语法不正确

无论是直接在“新建查询”窗口中运行还是构建到存储过程中都是一样的。

数据库的所有者是“SA”,可以追溯到几年前我的网络主机(物理服务器的所有者)首次设置此数据库时。这让我认为可能存在权限问题,或者所有者名称和我正在使用的登录名之间存在一些模糊的不匹配。但如果这是真的,我希望错误告诉我我无权执行该命令。

我是否遗漏了一些明显的语法错误,或者我是否需要深入研究所有权和权限以获得修复此问题的权利?

【问题讨论】:

  • 你的数据库的兼容级别是多少?
  • ALTER SCHEMA 即使在 compatibility_level=80 下也能工作,所以不可能。 SELECT @@VERSION; 的输出是什么?
  • 兼容级别为 SQL Server 2000 (80)。我很惊讶地看到 Select Version 命令返回 SQL Server 2000 - 8.00.2039。我被引导相信几年前已经升级到 2005 年了。
  • 解决了!原来这只不过是我认为我正在使用 SQL Server 2005 机器,而实际上我需要使用 2000 的命令语法:sp_changeObjectOwner 'oldschemaname.table1','newschemaname'

标签: sql-server-2005 syntax-error database-schema alter management-studio-express


【解决方案1】:

新的 Schema 名称需要放在括号中,否则会失败

示例语句: ALTER SCHEMA [NewSchemaName] TRANSFER dbo.Tracking

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多