如何重命名用户创建的 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')
以获取原始 Collation 值,将其存储在某处并运行 ALTER DATABASE MyDatabase COLLATE SQL_Latin1_General_CP1250_CS_AS
,运行我的重命名语句,然后使用旧的 Collation 值再次运行 ALTER DATABASE
语句跨度>
以上是关于如何重命名用户创建的 SYSUSERS 表?的主要内容,如果未能解决你的问题,请参考以下文章
linux系统创建文件,创建目录,创建用户,创建组,复制文件,重命名文件的命令怎么写