我有一个数据库服务器,上面有多个数据库。我想为这些数据库之一创建登录名,但是当用户登录到服务器时,我不希望显示服务器上的其他数据库。这可能吗?
我在服务器上创建了一个登录名,并在一台服务器上为该登录名授予了 db_readonly 角色。但是,当我通过 SQL Server Managment Studio 连接时,我会看到所有数据库的列表。我看不到每个表中定义了哪些表。
我想消除这种混乱,以便当用户连接时只有一个(如果包括主数据库则只有两个)可用数据库。
我有通过 Microsoft Azure 平台托管的 SQL 服务器和 Web 应用程序。当我从本地网络运行Web应用程序(并尝试连接azure sql服务器)时,我不断收到上述错误,但是我从未在azure web应用程序服务上遇到问题(即在azure上托管我的web应用程序之后)
我知道这个错误很熟悉。但在这种情况下,这似乎很奇怪。我已经检查过以下内容,
任何帮助将不胜感激。
有人可以告诉我如何将 Azure Active Directory 组添加到 azure sql server 中,我正在使用服务器管理器工具来执行此操作,但找不到任何方法来解决这个问题,不过我可以添加简单的 Azure Active Directory 用户。团体?
当我登录到 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)
为什么我收到消息?
是否可以在数据库项目中创建用户,以便我稍后指定密码(不是源代码)?
我需要通过跳转盒(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 yes和AllowTcpForwarding yes
有人可以帮我弄清楚我做错了什么吗?
在 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
我正在尝试使用本地机器上的 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 并将其链接以解决问题。 …
描述:
我有一个连接到 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?
我正在尝试使用 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 SQL DB PaaS 相比,选择 Azure SQL 托管实例可以获得哪些额外好处。我知道 SQL 托管实例仅作为基于 vCore 的购买模型提供。除此之外,一个人比另一个人有什么额外的好处和好处。任何答复将不胜感激。
azure ×5
sql-server ×3
azure-devops ×2
postgresql ×1
powershell ×1
sql ×1
sqlcmd ×1
ssh ×1
ssh-tunnel ×1
t-sql ×1