Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.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
Azure SQL不允许为创建的客户端登录_Sql_Azure_Azure Sql Database_Azure Sql Data Warehouse_Azure Sql Managed Instance - Fatal编程技术网

Azure SQL不允许为创建的客户端登录

Azure SQL不允许为创建的客户端登录,sql,azure,azure-sql-database,azure-sql-data-warehouse,azure-sql-managed-instance,Sql,Azure,Azure Sql Database,Azure Sql Data Warehouse,Azure Sql Managed Instance,我在Azure Data Studio中的数据库中使用免费帐户为Azure SQL创建了多个用户,操作过程如下: 将客户端ip地址添加到防火墙 在主数据库上创建登录名 创建用户 添加至少包含db_accessadmin的适当角色 尽管如此,我尝试登录Azure Data Studio和SSMS的尝试仍然失败,除非我使用安装程序上创建的管理员帐户。唯一的eror信息是: 登录失败 我正在尝试从我的ip地址连接,甚至将我的ip地址添加到数据库防火墙。我错过什么了吗 编辑 在master上运行命令

我在Azure Data Studio中的数据库中使用免费帐户为Azure SQL创建了多个用户,操作过程如下:

  • 将客户端ip地址添加到防火墙
  • 在主数据库上创建登录名
  • 创建用户
  • 添加至少包含db_accessadmin的适当角色
尽管如此,我尝试登录Azure Data Studio和SSMS的尝试仍然失败,除非我使用安装程序上创建的管理员帐户。唯一的eror信息是:

登录失败

我正在尝试从我的ip地址连接,甚至将我的ip地址添加到数据库防火墙。我错过什么了吗

编辑

在master上运行命令以创建用户[用户名和密码已更改]:

CREATE LOGIN userlogin WITH PASSWORD='my_password';
这些命令在数据库上运行:

CREATE USER myuser FROM LOGIN userlogin;
ALTER ROLE db_datawriter ADD MEMBER myuser;
ALTER ROLE db_datareader ADD MEMBER myuser;
ALTER ROLE db_accessadmin ADD MEMBER myuser;
Microsoft.Data.SqlClient.SqlException (0x80131904): Login failed for user 'myuser'.
   at Microsoft.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at Microsoft.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   at Microsoft.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   at Microsoft.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   at Microsoft.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK)
   at Microsoft.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover)
   at Microsoft.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, SqlCredential credential, TimeoutTimer timeout)
   at Microsoft.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, SqlCredential credential, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance)
   at Microsoft.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling, String accessToken, DbConnectionPool pool, SqlAuthenticationProviderManager sqlAuthProviderManager)
   at Microsoft.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
   at Microsoft.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions)
   at Microsoft.Data.ProviderBase.DbConnectionFactory.<>c__DisplayClass40_0.<TryGetConnection>b__1(Task`1 _)
   at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke()
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location where exception was thrown ---
   at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot)
--- End of stack trace from previous location where exception was thrown ---
   at Microsoft.SqlTools.ServiceLayer.Connection.ReliableConnection.ReliableSqlConnection.<>c__DisplayClass30_0.<<OpenAsync>b__0>d.MoveNext() in D:\a\1\s\src\Microsoft.SqlTools.ManagedBatchParser\ReliableConnection\ReliableSqlConnection.cs:line 314
--- End of stack trace from previous location where exception was thrown ---
   at Microsoft.SqlTools.ServiceLayer.Connection.ConnectionService.TryOpenConnection(ConnectionInfo connectionInfo, ConnectParams connectionParams) in D:\a\1\s\src\Microsoft.SqlTools.ServiceLayer\Connection\ConnectionService.cs:line 549
ClientConnectionId:0682c1d3-d252-4379-b0b2-c00364e90356
Error Number:18456,State:1,Class:14
Azure数据中有关尝试访问数据库的详细信息:

CREATE USER myuser FROM LOGIN userlogin;
ALTER ROLE db_datawriter ADD MEMBER myuser;
ALTER ROLE db_datareader ADD MEMBER myuser;
ALTER ROLE db_accessadmin ADD MEMBER myuser;
Microsoft.Data.SqlClient.SqlException (0x80131904): Login failed for user 'myuser'.
   at Microsoft.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at Microsoft.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   at Microsoft.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   at Microsoft.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   at Microsoft.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK)
   at Microsoft.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover)
   at Microsoft.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, SqlCredential credential, TimeoutTimer timeout)
   at Microsoft.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, SqlCredential credential, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance)
   at Microsoft.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling, String accessToken, DbConnectionPool pool, SqlAuthenticationProviderManager sqlAuthProviderManager)
   at Microsoft.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
   at Microsoft.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions)
   at Microsoft.Data.ProviderBase.DbConnectionFactory.<>c__DisplayClass40_0.<TryGetConnection>b__1(Task`1 _)
   at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke()
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location where exception was thrown ---
   at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot)
--- End of stack trace from previous location where exception was thrown ---
   at Microsoft.SqlTools.ServiceLayer.Connection.ReliableConnection.ReliableSqlConnection.<>c__DisplayClass30_0.<<OpenAsync>b__0>d.MoveNext() in D:\a\1\s\src\Microsoft.SqlTools.ManagedBatchParser\ReliableConnection\ReliableSqlConnection.cs:line 314
--- End of stack trace from previous location where exception was thrown ---
   at Microsoft.SqlTools.ServiceLayer.Connection.ConnectionService.TryOpenConnection(ConnectionInfo connectionInfo, ConnectParams connectionParams) in D:\a\1\s\src\Microsoft.SqlTools.ServiceLayer\Connection\ConnectionService.cs:line 549
ClientConnectionId:0682c1d3-d252-4379-b0b2-c00364e90356
Error Number:18456,State:1,Class:14
Microsoft.Data.SqlClient.SqlException(0x80131904):用户“myuser”登录失败。
位于Microsoft.Data.SqlClient.SqlInternalConnection.OneError(SqlException异常、布尔断开连接、操作'1 wrapCloseInAction)
位于Microsoft.Data.SqlClient.TdsParser.throweexception和warning(TdsParserStateObject stateObj、布尔调用者连接锁、布尔异步关闭)
位于Microsoft.Data.SqlClient.TdsParser.TryRun(RunBehavior RunBehavior、SqlCommand cmdHandler、SqlDataReader dataStream、BulkCopySimpleResultSet bulkCopyHandler、TdsParserStateObject stateObj、Boolean和dataReady)
在Microsoft.Data.SqlClient.TdsParser.Run(RunBehavior RunBehavior,SqlCommand cmdHandler,SqlDataReader dataStream,BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj)
在Microsoft.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(布尔值登记OK)
位于Microsoft.Data.SqlClient.SqlInternalConnectionDS.AttemptOneLogin(ServerInfo ServerInfo、String newPassword、SecureString newSecurePassword、Boolean IgnoresInOpenTimeout、TimeoutTimer timeout、Boolean withFailover)
位于Microsoft.Data.SqlClient.SqlInternalConnectionDs.LoginOfAliver(ServerInfo服务器信息、字符串newPassword、SecureString newSecurePassword、Boolean redirectedUserInstance、SqlConnectionString连接选项、SqlCredential凭证、超时超时)
位于Microsoft.Data.SqlClient.SqlInternalConnectionDS.OpenLoginList(超时计时器超时、SqlConnectionString连接选项、SqlCredential凭据、字符串newPassword、SecureString newSecurePassword、布尔重定向EduceInstance)
在Microsoft.Data.SqlClient.SqlInternalConnectionDS..ctor(DbConnectionPoolIdentity、SqlConnectionString connectionOptions、SqlCredential凭据、对象提供信息、String newPassword、SecureString newSecurePassword、Boolean redirectedUserInstance、SqlConnectionString userConnectionOptions、SessionData reconnectSessionData、Boolean applyTransientFaultHandling、String accessToken、DbConnectionPool池,SqlAuthenticationProviderManager(sqlAuthProviderManager)
位于Microsoft.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions、DbConnectionPoolKey、Object poolGroupProviderInfo、DbConnectionPool、DBConnectionOwningConnection、DbConnectionOptions用户选项)
位于Microsoft.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection所有者连接、DbConnectionPoolGroup池组、DbConnectionOptions用户选项)
在Microsoft.Data.ProviderBase.DbConnectionFactory.c__中显示Class40_0.b__1(任务“1”)
位于System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke()
位于System.Threading.ExecutionContext.RunInternal(ExecutionContext ExecutionContext,ContextCallback回调,对象状态)
---来自引发异常的上一个位置的堆栈结束跟踪---
位于System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task和currentTaskSlot)
---来自引发异常的上一个位置的堆栈结束跟踪---
在Microsoft.SqlTools.ServiceLayer.Connection.ReliableConnection.ReliableSqlConnection.c_uuu中显示Class30_0.d.MoveNext(),位于d:\a\1\s\src\Microsoft.SqlTools.ManagedBatchParser\ReliableConnection\ReliableSqlConnection.cs:第314行
---来自引发异常的上一个位置的堆栈结束跟踪---
位于D:\a\1\s\src\Microsoft.SqlTools.ServiceLayer\Connection\ConnectionService.TryOpenConnection(ConnectionInfo ConnectionInfo,ConnectParams connectionParams connectionParams)中的Microsoft.SqlTools.ServiceLayer\Connection\ConnectionService.cs:第549行
客户连接ID:0682c1d3-d252-4399-b0b2-c00364e90356
错误号:18456,状态:1,类别:14
编辑2


嗯,经过一番努力,我发现了SSM。它使用相同的命令就像一个符咒。不确定,但默认命令在角色和角色用户之前有一个N。它还从登录切换到了我刚刚在Azure Data Studio上登录了一段时间的登录。

问题是你意外地使用了,而不是来自。大多数文档我看到的数字表明这不重要。我唯一能想到的是,如果你有评论部分 [https://docs.microsoft.com/en-us/sql/t-sql/statements/create-user-transact-sql?view=sql-服务器版本15#备注]

这个例子显式地使用from,然后还有来自外部提供者的其他引用。我想知道是否有一些东西是AD想要从中获得的

可能只是矩阵中的一个小问题。


很高兴你能让它工作,我也能提供帮助。

错误是否会很快恢复,或者暂停时间是否超过10秒。你估计需要多长时间才能收到错误?你是否尝试过在创建Azure SQL时创建的默认用户/密码?@Ron默认值工作正常。这非常迅速。我假设我可以有超过1个用户你可以,从基础开始你看过这篇文章吗?@Ron是的。就是这样。我把登录名添加到master和user中