我们从事实开始:
.
--USE master;
--**ERROR** USE statement is not supported to switch between databases. Use a new connection to connect to a different database.
--GO
ALTER LOGIN nonadmin WITH PASSWORD='new5as$word' OLD_PASSWORD='old5a$sword';
--**ERROR** User must be in the master database.
GO
Run Code Online (Sandbox Code Playgroud)
可以将数据库迁移到包含模式,但这种方式会非常累人,因为遗留代码有很多这样的地方:
IF(OBJECT_ID('tempdb..#temp1') IS NOT NULL)
BEGIN
DROP TABLE #temp1
END;
CREATE TABLE #temp1
(
id int not null IDENTITY,
CONSTRAINT PK_tt1 PRIMARY KEY(id)
)
Run Code Online (Sandbox Code Playgroud)
除了迁移到包含数据库模式之外,是否有合适的解决方法?
您正在尝试更改包含用户的密码。包含的用户没有服务器登录名,因此您无法使用该ALTER LOGIN
语句。
您需要使用ALTER USER:
ALTER USER nonadmin WITH PASSWORD='new5as$word' OLD_PASSWORD='old5a$sword';
Run Code Online (Sandbox Code Playgroud)
服务器登录名是您登录到服务器的身份。在 SSMS 中,您将在服务器的安全节点中找到登录信息。然后,这些登录名被授予以用户身份访问特定数据库的权限。这些用户存储在master
数据库中。
归档时间: |
|
查看次数: |
2355 次 |
最近记录: |