gpt4 book ai didi

sql-server - 如何整理sql server中的sysname

转载 作者:行者123 更新时间:2023-12-05 07:54:56 25 4
gpt4 key购买 nike

我正在尝试运行查询以删除来自 Windows 的服务器登录并重新创建它们。我运行这个查询来删除登录,它工作正常

USE master
SELECT
'IF EXISTS (SELECT * FROM sys.server_principals WHERE name = ' +
'''' + [name] + '''' + ')' +
' BEGIN DROP LOGIN ' + QUOTENAME([name]) + ' END; ' +
'CREATE LOGIN ' + QUOTENAME([name]) + ' FROM WINDOWS; '
FROM sys.server_principals
WHERE type_desc IN ('WINDOWS_GROUP' , 'WINDOWS_LOGIN')

但是下面的查询

USE master
SELECT
'ALTER LOGIN ' + QUOTENAME([name]) + ' WITH DEFAULT_DATABASE = ' +
spr.default_database_name
+ 'GRANT ' + spe.permission_name + ' to ' + QUOTENAME([name])
+ CASE WHEN spr.default_database_name IS NOT NULL
THEN ' WITH DEFAULT DATABASE = ' + spr.default_database_name
ELSE
''
END
FROM sys.server_principals spr INNER JOIN
sys.server_permissions spe ON spr.principal_id = spe.grantee_principal_id
WHERE spr.type_desc IN ('WINDOWS_GROUP', 'WINDOWS_LOGIN')

正在返回这个错误

Cannot resolve collation conflict for column 1 in SELECT statement.

所以当我调查这个问题时,它来自 sysnamedefault_database_name当我使用 spr.default_database_name COLLATE Latin1_General_CI_AI 时查询运行我的三部分问题是:我是因为一行还是因为列数据类型是 sysname 而遇到问题? COLLATE Latin1_General_CI_AI 是这种情况下的正确语法吗?。当我运行这个查询时

SELECT name, description
FROM sys.fn_helpcollations()

结果显示了不同语言的许多排序规则。那么对于一个完全英文的数据库,我是如何得到这个错误的。

编辑:我运行了这两个查询来检查数据库和服务器的排序规则属性

SELECT DATABASEPROPERTYEX(N'master', N'Collation')
SELECT SERVERPROPERTY(N'Collation')

结果都是

SQL_Latin1_General_CP1_CI_AS

最佳答案

这可能有助于为数据库和服务器实例带来默认的排序规则,如下所示更改查询:

SELECT 
'ALTER LOGIN ' + QUOTENAME([name]) + ' WITH DEFAULT_DATABASE = ' +
spr.default_database_name COLLATE database_default
+ 'GRANT ' + spe.permission_name + ' to ' + QUOTENAME([name])
+ CASE WHEN spr.default_database_name IS NOT NULL
THEN ' WITH DEFAULT DATABASE = ' + spr.default_database_name COLLATE database_default
ELSE
''
END
FROM sys.server_principals spr INNER JOIN
sys.server_permissions spe ON spr.principal_id = spe.grantee_principal_id
WHERE spr.type_desc IN ('WINDOWS_GROUP', 'WINDOWS_LOGIN')

关于sql-server - 如何整理sql server中的sysname,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30737833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com