【问题标题】:How can I rename a user-created SYSUSERS table?如何重命名用户创建的 SYSUSERS 表?
【发布时间】:2011-04-06 14:21:30
【问题描述】:

有人将我们的 Users 表重命名为 SYSUsers,这是一个关键的 sql 表名。有没有办法重命名这个表?

我尝试右键单击表并重命名,并在其上运行sp_RENAME,但两者都试图重命名系统 sysusers 表而不是用户创建的表。我什至无法从[MyDatabase].[dbo].[SYSUsers] 中选择或导出数据,因为它是从 sql server sysusers 表而不是用户创建的表中读取的。

我们使用的是 SQL Server 2005。

【问题讨论】:

  • “有人将我们的用户表重命名为 SYSUsers”——他们是在大火上烤吗?他们是如何获得这样做的权限的?在火上腾出另一个空间!
  • 这不是表名的正确大小写。大概在区分大小写的排序规则中,您不会遇到这个问题。
  • @Rachel - 如果它不在生产中,一种解决方法可能是暂时将数据库排序规则更改为 CS 重命名表,然后切换回来。
  • @Rachel - 这是我建议的数据库默认排序规则。 ALTER DATABASE [YourDB] COLLATE SQL_Latin1_General_CP1250_CS_AS(或任何其他区分大小写的排序规则)我在一个区分大小写的实例上工作,所以我无法测试这是否可行。我可以确认创建一个名为 SYSUsers 的表没有给我带来任何问题,但是以小写字母进行操作!
  • @Martin 谢谢,那行得通。如果您将其发布为答案,我会接受它

标签: sql-server rename system-tables


【解决方案1】:

SYSUsers 不会对我造成任何此类问题,因为我处理区分大小写的实例(但是创建一个名为 sysusers 的表会!)。

也许您可以尝试暂时将数据库的排序规则更改为 CS 并在之后将其切换回来?

【讨论】:

  • 谢谢马丁。对于遇到此问题的其他人,我最终运行 SELECT SERVERPROPERTY('COLLATION') 以获取原始 Collat​​ion 值,将其存储在某处并运行 ALTER DATABASE MyDatabase COLLATE SQL_Latin1_General_CP1250_CS_AS,运行我的重命名语句,然后使用旧的 Collat​​ion 值再次运行 ALTER DATABASE 语句跨度>
猜你喜欢
  • 2023-01-24
  • 2013-05-21
  • 1970-01-01
  • 2021-04-04
  • 2017-10-08
  • 1970-01-01
  • 2010-10-30
  • 2018-08-21
  • 2017-10-22
相关资源
最近更新 更多