Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SQL查询在SSM中工作,但在C中不工作:选择拒绝_C#_Sql Server_Ssms_Sqldatareader - Fatal编程技术网

C# SQL查询在SSM中工作,但在C中不工作:选择拒绝

C# SQL查询在SSM中工作,但在C中不工作:选择拒绝,c#,sql-server,ssms,sqldatareader,C#,Sql Server,Ssms,Sqldatareader,首先,它不是一个不起作用的特殊语句。从[表格]中选择*;也不行。当我以用户身份在SSMS中运行它时,它工作得非常好。当我在C中这样使用它时: string sqlCommand = "SELECT * FROM [TABLE];" using (var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Name"].ToString())) using (var command = new SqlCommand(s

首先,它不是一个不起作用的特殊语句。从[表格]中选择*;也不行。当我以用户身份在SSMS中运行它时,它工作得非常好。当我在C中这样使用它时:

string sqlCommand = "SELECT * FROM [TABLE];"

using (var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Name"].ToString()))
using (var command = new SqlCommand(sqlCommand, conn))
{
    conn.Open();

    using (var dataReader = command.ExecuteReader())
    {
        while (dataReader.Read())
        {
            // work with results
        }
    }
}
我使用try-catch记录此代码块,并收到以下错误消息:System.Data.SqlClient.SqlException 0x80131904:对对象“TABLE”、数据库“MyDb”、架构“dbo”的SELECT权限被拒绝

即使我在数据库所在的服务器上运行该程序,也会得到相同的错误

我的连接字符串如下所示:

Data Source=Server\Something;Initial Catalog=MyDb;User ID=DOMAIN\username;Password=verySecurePassword;Trusted_Connection=True;
用户A在整个数据库上具有datareader角色


你知道为什么会这样吗?我的数据库管理员也无法帮助我,而且这似乎不是网络问题,因为连接似乎正常工作。

当您的连接字符串中包含以下内容时:

Trusted_Connection=True;
连接字符串的这一部分将被忽略:

User ID=DOMAIN\username;Password=verySecurePassword;
可信连接和集成安全性意味着您始终以运行程序进程的帐户身份连接到服务器。您不需要指定密码;相反,程序将传递为运行进程的用户颁发的身份验证令牌,数据库将根据该令牌进行验证


如果需要使用域登录,则必须以该用户的身份运行程序。如果需要使用用户名/密码,则必须对Sql Server中定义的非域帐户使用Sql身份验证。

当连接字符串中包含此项时:

Trusted_Connection=True;
连接字符串的这一部分将被忽略:

User ID=DOMAIN\username;Password=verySecurePassword;
可信连接和集成安全性意味着您始终以运行程序进程的帐户身份连接到服务器。您不需要指定密码;相反,程序将传递为运行进程的用户颁发的身份验证令牌,数据库将根据该令牌进行验证


如果需要使用域登录,则必须以该用户的身份运行程序。如果需要使用用户名/密码,则必须对Sql Server中定义的非域帐户使用Sql身份验证。

userA与username相同?用户登录是否属于Sql Server management studio下的Sql安全数据库角色?如果是这样的话,您可能需要修改该角色以包含该数据库的SELECT权限。您有db管理员,但他们无法理解?这让我无法控制地畏缩。简单明了,连接的用户没有从该表中选择数据的权限。我看到您正在使用集成安全性。确保使用同一用户连接到SSMS。如果您使用的是同一个用户,那么就没有理由在您的C程序中没有使用UserA时在CY上有不同的行为。User ID=DOMAIN\username对该表没有选择权限usera与username相同?用户登录是否属于SQL Server management studio下的SQL安全数据库角色?如果是这样的话,您可能需要修改该角色以包含该数据库的SELECT权限。您有db管理员,但他们无法理解?这让我无法控制地畏缩。简单明了,连接的用户没有从该表中选择数据的权限。我看到您正在使用集成安全性。确保使用同一用户连接到SSMS。如果您使用的是同一个用户,那么就没有理由在您的C程序中没有使用UserA时在CY上有不同的行为。User ID=DOMAIN\username没有该表的select权限非常感谢。我不知道我脑子里在想什么。既然你向我解释了,那就很简单了。我确信我在另一个项目中使用了相同的代码等,并且成功了。我猜我的用户在不知不觉中拥有另一个数据库的权限。无论如何,还有工作要做。再次感谢:非常感谢。我不知道我脑子里在想什么。既然你向我解释了,那就很简单了。我确信我在另一个项目中使用了相同的代码等,并且成功了。我猜我的用户在不知不觉中拥有另一个数据库的权限。无论如何,还有工作要做。再次感谢: