如何重命名用户创建的 SYSUSERS 表?

Posted

技术标签:

【中文标题】如何重命名用户创建的 SYSUSERS 表?【英文标题】:How can I rename a user-created SYSUSERS table? 【发布时间】: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 谢谢,那行得通。如果您将其发布为答案,我会接受它 【参考方案1】:

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

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

【讨论】:

谢谢马丁。对于遇到此问题的其他人,我最终运行 SELECT SERVERPROPERTY('COLLATION') 以获取原始 Collat​​ion 值,将其存储在某处并运行 ALTER DATABASE MyDatabase COLLATE SQL_Latin1_General_CP1250_CS_AS,运行我的重命名语句,然后使用旧的 Collat​​ion 值再次运行 ALTER DATABASE 语句跨度>

以上是关于如何重命名用户创建的 SYSUSERS 表?的主要内容,如果未能解决你的问题,请参考以下文章

批量创建用户与批量文件重命名

如何在 MySQL 的一个原子操作中重命名两个表

linux系统创建文件,创建目录,创建用户,创建组,复制文件,重命名文件的命令怎么写

Oracle查询语句中重命名的列在WHERE中无效?

无法在 Tampermonkey 中重命名或创建多个自定义用户脚本

允许 Django 用户创建另一个