0

我已经为 SQL Server 数据库创建了用户。它被创建得很好。

我的问题是,当我通过执行以下代码通过应用程序访问时,它不会切换到我指定为的用户

exec as user='myuser'
ALTER USER myuser WITH DEFAULT_SCHEMA=maindb
EXEC sp_addrolemember N'db_owner', N'myuser'

我已经将查询运行为

DbCommand command = ds.CreateCommand();
command.CommandText = "exec as user='myuser'";
command.CommandType = CommandType.Text;
command.ExecuteNonQuery();

来自 C# 代码

等待您的宝贵回复和意见

4

2 回答 2

0

是的,这是意料之中的。连接字符串包含连接到服务器所需的凭据。并且通常在应用程序和数据库之间有一个连接字符串来优化资源并利用连接池等。

不同的用户在系统中可能有不同的权限,但这可以通过授权来处理,而不是连接字符串。

于 2012-11-28T14:00:17.187 回答
0

执行作为条款

EXECUTE AS 子句中指定的用户名或登录名必须分别作为 sys.database_principals 或 sys.server_principals 中的主体存在,否则创建或更改模块操作将失败。此外,创建或更改模块的用户必须对主体具有 IMPERSONATE 权限。

你满足这些条件吗?

于 2012-11-28T16:18:24.463 回答