标签: azure-sql-database

仅显示 SQL Server 上的一个数据库

我有一个数据库服务器,上面有多个数据库。我想为这些数据库之一创建登录名,但是当用户登录到服务器时,我不希望显示服务器上的其他数据库。这可能吗?

我在服务器上创建了一个登录名,并在一台服务器上为该登录名授予了 db_readonly 角色。但是,当我通过 SQL Server Managment Studio 连接时,我会看到所有数据库的列表。我看不到每个表中定义了哪些表。

我想消除这种混乱,以便当用户连接时只有一个(如果包括主数据库则只有两个)可用数据库。

sql t-sql sql-server azure-sql-database

7
推荐指数
1
解决办法
1万
查看次数

Azure 错误:建立与 SQL Server 的连接时发生网络相关或特定于实例的错误

我有通过 Microsoft Azure 平台托管的 SQL 服务器和 Web 应用程序。当我从本地网络运行Web应用程序(并尝试连接azure sql服务器)时,我不断收到上述错误,但是我从未在azure web应用程序服务上遇到问题(即在azure上托管我的web应用程序之后)

我知道这个错误很熟悉。但在这种情况下,这似乎很奇怪。我已经检查过以下内容,

  1. SQL 连接管理正确。(我使用的是ADO.Net)
  2. 所有网关 IP 均已针对 azure sql 列入白名单。
  3. 没有防火墙阻止我的专用网络。

任何帮助将不胜感激。

sql-server azure azure-sql-database azure-web-app-service

7
推荐指数
1
解决办法
2万
查看次数

如何在 Azure SQL Server 中添加 Azure AD 组

有人可以告诉我如何将 Azure Active Directory 组添加到 azure sql server 中,我正在使用服务器管理器工具来执行此操作,但找不到任何方法来解决这个问题,不过我可以添加简单的 Azure Active Directory 用户。团体?

azure-active-directory azure-sql-database

7
推荐指数
2
解决办法
1万
查看次数

无法为无法在数据库中进行身份验证的用户提供参数 PASSWORD

当我登录到 azure 门户时,选择我的 SQL 数据库 -> 工具 -> QueryEditor 并输入:

ALTER USER MyUser WITH Password = '**********'
Run Code Online (Sandbox Code Playgroud)

我收到错误:

无法执行查询。错误:无法为无法在数据库中进行身份验证的用户提供参数 PASSWORD。

我在 MyUser.sql (Build Action=Build) 的 Visual Studio 数据库项目中创建了用户:

CREATE USER [My_User] WITHOUT LOGIN WITH DEFAULT_SCHEMA=[dbo];
Run Code Online (Sandbox Code Playgroud)

为什么我收到消息?

是否可以在数据库项目中创建用户,以便我稍后指定密码(不是源代码)?

sql-server database-project azure-sql-database

7
推荐指数
1
解决办法
8299
查看次数

无法使用 sqlcmd 通过 SSH 隧道访问 SQL 数据库

我需要通过跳转盒(Azure VM)从本地计算机连接到 Azure SQL DB。我使用以下命令设置端口转发:

ssh -fN -L 41433:my-db.database.windows.net:1433 me@jump-box
Run Code Online (Sandbox Code Playgroud)

我可以确认隧道已设置,因为在详细模式下我看到了消息

Local connections to LOCALHOST:41433 forwarded to remote address my-db.database.windows.net:1433
Run Code Online (Sandbox Code Playgroud)

现在,当我跑

sqlcmd -S 127.0.0.1,41433 -U username -P password -d db 
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息

Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server : [Microsoft][ODBC Driver 13 for SQL Server]
[SQL Server]Cannot open server "127.0.0.1" requested by the login.  The login failed..
Run Code Online (Sandbox Code Playgroud)

我已经确保/etc/ssh/sshd_config有线条GatewayPorts yesAllowTcpForwarding yes

有人可以帮我弄清楚我做错了什么吗?

ssh sqlcmd azure ssh-tunnel azure-sql-database

7
推荐指数
1
解决办法
3476
查看次数

使用 AAD 身份验证调用 Sqlcmd

在 Azure DevOps“发布管道”中,我提供 Azure 资源(包括 SQLServer 数据库)并尝试使用托管标识配置对数据库的访问。

在确保 DevOps 服务主体是定义为数据库服务器的 AAD 管理员的 AAD 组的成员后,我需要运行一些 SQL 来添加托管身份用户并更改角色。这是在 Azure Powershell 任务中使用Invoke-Sqlcmdcmdlet尝试的。

Invoke-Sqlcmd有两种口味,我不清楚我应该使用哪一种以及是否重要。到目前为止,我尝试的所有内容都未能通过 AAD 进行身份验证。

如何将我使用 AAD 身份验证的意图传达给Invoke-Sqlcmd

我需要先Connect-AzureAD吗?

如果我需要传递一个System.Management.Automation.PSCredential对象,鉴于我们正在处理服务主体(Azure DevOps 服务用户),我应该使用什么作为用户和密码?

powershell azure-powershell azure-active-directory azure-sql-database azure-devops

7
推荐指数
1
解决办法
5438
查看次数

服务器在连接到 Azure Postgres 时意外关闭连接

我正在尝试使用本地机器上的 psql 连接到 Azure Postgresql 并收到以下错误:

$ psql "host=username.postgres.database.azure.com port=5432 dbname=postgres user=username@domain password=mypassword sslmode=require"
psql: error: could not connect to server: server closed the connection unexpectedly
    This probably means the server terminated abnormally
    before or while processing the request.
Run Code Online (Sandbox Code Playgroud)

本地 Postgres 版本:12.1,Azure Postgres 数据库版本:10,macOS Majove。

这个问题是在我使用 Homebrew 重新安装 Postgres 后才开始的。我运行没有问题$ psql --host=localhost

我尝试postgresql@10使用自制软件进行安装,以便在运行时psql收到消息psql (12.1, server 10.11)。但是当我尝试登录 Azure Postgres 时,我遇到了与上面相同的错误。

我对 Postgres 和 Azure 还很陌生,希望得到任何建议。

更新:

感谢您的评论和反馈。

我使用 Homebrew 正确安装了 Postgres 10 并将其链接以解决问题。 …

postgresql azure azure-sql-database

7
推荐指数
1
解决办法
4458
查看次数

暂停时 Azure SQL Serverless 数据库返回代码

描述:

我有一个连接到 Azure 无服务器数据库的应用程序。数据库可以处于暂停状态和在线状态。当一小时没有活动时,数据库会自动暂停。这意味着当我的应用程序在暂停时尝试打开与数据库的连接时,连接超时并给出超时异常。

Azure 在他们的文档中声明:

如果无服务器数据库暂停,则第一次登录将恢复数据库并返回一个错误,指出数据库不可用,错误代码为 40613。恢复数据库后,必须重试登录以建立连接。不需要修改具有连接重试逻辑的数据库客户端。来源

当我尝试通过 SQL Management Studio 连接到数据库时,我能够返回此错误代码 40613。但是当我尝试从我的应用程序打开到数据库的连接时,我只收到超时异常,因此我不知道数据库是否不可用或者数据库是否实际上正在恢复。

代码示例:

public IDbConnection GetConnection()
    {
        var connection = new SqlConnection(_connectionString);
        try
        {
            connection.Open();
            return connection;
        }
        catch (SqlException e)
        {
            if (e.Number == 40613)
            {
                //Database is resuming
            }
        }
        finally
        {
            connection.Close();
        }
    }
Run Code Online (Sandbox Code Playgroud)

异常示例:

当我运行我的应用程序并且数据库处于暂停状态时,我收到此异常: Visual Studio 中的异常片段

有谁知道为什么我没有收到 Azure 在其文档中声明的错误代码 40613?

azure-sql-database

7
推荐指数
1
解决办法
1742
查看次数

Azure Pipelines 连接到 Azure SQL 数据库 AAD - 用户“<令牌识别主体> 登录失败”

我正在尝试使用 AAD 帐户连接到 Azure SQL DB 作为 Azure 管道的一部分。大致我有以下几点:

具有关联服务连接的 Azure 管道。将 AAD 管理员设置为服务主体(连接的)的 Azure SQL DB。获取服务主体的不记名令牌的 Azure CLI 任务。

然后我有一个 Azure Powershell 脚本,它使用不记名令牌连接到数据库:

$conn = new-object System.Data.SqlClient.SqlConnection
$conn.ConnectionString = "Server=tcp:$($sqlServer),1433;Initial Catalog=$($sqlDB);Persist Security Info=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;" 
$conn.AccessToken = $env:ACCESSTOKEN
$conn.Open()
Run Code Online (Sandbox Code Playgroud)

这会导致以下错误:

Login failed for user '<token-identified principal>
Run Code Online (Sandbox Code Playgroud)

允许运行管道的代理通过 SQL Server 防火墙。

在 DB 日志中,错误代码为 18456,状态为 132(AAD 失败)。

我已经使用 Azure CLI 使用服务连接服务主体登录、请求不记名令牌然后连接到数据库(使用上面的代码)手动测试了这一点,这是有效的。

如果我比较 Pipeline 测试和 Azure CLi 手动测试的不记名令牌,它们是相同的(除了 exp、uti 和 aio)

有任何想法吗?

azure azure-sql-database azure-devops

7
推荐指数
1
解决办法
2172
查看次数

通过选择 Azure SQL 托管实例与 Azure SQL DB PaaS 相比,可以获得什么额外的好处

我想知道与 Azure SQL DB PaaS 相比,选择 Azure SQL 托管实例可以获得哪些额外好处。我知道 SQL 托管实例仅作为基于 vCore 的购买模型提供。除此之外,一个人比另一个人有什么额外的好处和好处。任何答复将不胜感激。

azure azure-sql-database azure-sql-managed-instance

7
推荐指数
2
解决办法
2989
查看次数