标签: azure-sql-database

为 Azure-SQL-DB 添加 Active Directory 用户

我有一个 Active Directory 用户 LDomain\LUser,我希望该用户能够连接到 Azure-Sql-DB。MS 使用的语法会引发错误。

T-SQL:

CREATE USER [LDomain\LUser] FROM EXTERNAL PROVIDER
Run Code Online (Sandbox Code Playgroud)

错误:

找不到主体“LDomain\LUser”或不支持此主体类型。

我只是在寻找添加 AD 用户的脚本 - 没有界面。我知道 AD 用户存在于 Azure 中并已确认,但 Azure-Sql-DB 无法识别它,或者此 T-SQL 无效 - 尽管这是来自他们的文档。

security azure-sql-database active-directory azure azure-sql-data-warehouse

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

SQLAZURE 资源限制 - 最大并发会话数

我试图为我们的内部消耗选择一个层,并详细了解此限制。Azure SQL 数据库资源限制

一个特殊的问题实例如下图所示,并特别突出显示了值

在此输入图像描述

正如您所看到的,从突出显示的内容来看,最大并发限制为 60 个并发登录和 600 个并发会话

问:
单个查询可以并行进行,并且可以有多个会话,这些会话会在此限制下计数吗?

我尝试使用 Paul White 的文章强制并行查询执行计划来测试这一点,如下所示

DBCC FREEPROCCACHE
DBCC SETCPUWEIGHT(1000)

GO
-- Query to test  
some expensive query
GO

DBCC SETCPUWEIGHT(1)  
DBCC FREEPROCCACHE   
Run Code Online (Sandbox Code Playgroud)

或使用

OPTION (RECOMPILE, QUERYTRACEON 8649)
Run Code Online (Sandbox Code Playgroud)

但当我使用下面的 DMV 检查时,我最多只能进行 9 个会话

select * from sys.dm_os_tasks 
where session_id=61
Run Code Online (Sandbox Code Playgroud)

这些跟踪标志和 DBCC 选项在 azure 中不起作用。如果我不清楚,请告诉我

sql-server azure-sql-database

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

由于“OLDEST_PAGE”,数据库事务日志已满

我们有一个托管在 azure 上的数据库。它是蓝色弹性池的一部分。从昨天开始,我们所有的数据库操作都持续失败,并出现以下错误。

由于“OLDEST_PAGE”,数据库事务日志已满

我们检查了数据库上的所有活动事务,但当前没有活动事务,但日志文件仍然占用 100% 的空间。

数据库日志文件

我已浏览以下文档页面,但无法完全理解该问题:

谁能帮我理解这个问题吗?



更新

当我们将此数据库移至新池时,日志大小会自动减小。搬家后我们没有遇到任何问题。

azure-sql-database transaction-log azure

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

使用 SQL Server 身份验证连接到 Azure SQL 数据库的速度缓慢

在 SSMS 中,当使用服务帐户和 SQL Server 身份验证连接到任何 Azure SQL 数据库时,连接本身可能需要 10 到 15 秒才能建立。

连接后,右键单击任何表,然后单击“选择前 1000 行”,这也需要 10 到 15 秒的时间来响应并在 SSMS 中显示行。

使用“Active Directory - Universal with MFA Supprt”身份验证时,不会发生任何延迟/滞后 - 但是,这不使用相同的服务帐户。

如何解决/调查 SQL Server 身份验证延迟?

authentication sql-server ssms azure-sql-database

5
推荐指数
1
解决办法
5012
查看次数

如何从暂停状态恢复 Azure 无服务器 SQL Server

我在 azure 上创建了一个无服务器 sql,并且有几个星期没有使用它。现在当我回到它时,我发现它处于暂停状态。

但搜索天蓝色仪表板,我找不到任何恢复它的方法。当我谷歌这个主题时,所有结果都在谈论如何恢复专用 SQL 池,这似乎是不同的事情。

如何让它重新上线?

azure-sql-database

5
推荐指数
2
解决办法
5853
查看次数

索引设计:使用 DATE 的聚集索引

每隔一段时间,人们就需要进行一次检查。这就是这样一个时刻。

我有用于报告的表格。它们每天删除/插入一次或每天多次,以始终使用连续的日期范围(例如本月至今或滚动 45 天)从源“刷新数据”。源数据没有 ID 或唯一性。

到目前为止,约定是在日期上使用聚集索引 - 每个表都有一个日期,每个查询都使用一个日期(99% 的时间)。如果表中有一个或多个使其唯一的列,我已将这些列添加到集群中以使其唯一(例如,状态和电子邮件)。如果没有,我添加了一个 ID IDENTITY 以使其唯一。

研究似乎建议“使用递增的 ID”,几乎没有偏差。然而,使用这个约定的性能非常出色——除非我在某个地方遗漏了一些东西。

因此,虽然这很好,但有时同行检查可能是一件好事:)

  • 将日期作为聚集索引中的前导列是否存在任何问题(考虑上述情况)?
  • 添加我自己的 ID 身份列以获得唯一性是否比 MS SQL 为我做的更好?
  • 先加ID,再加日期会不会更好?

环境:Azure SQL

index sql-server clustered-index index-tuning azure-sql-database

5
推荐指数
1
解决办法
926
查看次数

TransactionScope 未按预期工作是否存在某些根本原因?

对于以下代码...

using System.Transactions;
using Microsoft.Data.SqlClient;

var connectionString = "...";


using (var scope = new TransactionScope(TransactionScopeOption.RequiresNew,
           new TransactionOptions { IsolationLevel = IsolationLevel.Snapshot }))
{
    TestExec(connectionString);
    TestExec(connectionString);
    scope.Complete();
}


TestExec(connectionString);

static void TestExec(string connectionString)
{
    using var conn = new SqlConnection(connectionString);
    conn.Open();
    var cmd = new SqlCommand
    {
        CommandText = @"
DECLARE @useroptions table (Opt varchar(50), Value varchar(50));
INSERT @useroptions EXEC ('dbcc useroptions')
SELECT Value AS [isolation level], CURRENT_TRANSACTION_ID() AS [tran_id], @@SPID FROM @useroptions WHERE Opt = 'isolation level'",
        Connection = conn …
Run Code Online (Sandbox Code Playgroud)

sql-server ado.net azure-sql-database

5
推荐指数
1
解决办法
179
查看次数

链接服务器到 SQL Azure 非常慢

我可以使用 Management Studio 直接连接到我的 Azure SQL 数据库并执行以下查询:

select * from DB.dbo.DSeries where instrument='name1' 
Run Code Online (Sandbox Code Playgroud)

它的工作速度非常快。但是,如果我在连接到 Azure 的本地服务器中创建一个链接服务器(称为“WF”)并尝试执行相同的查询,

select * from WF.DB.dbo.DSeries where instrument='name1' 
Run Code Online (Sandbox Code Playgroud)

查询真的很慢。为什么会发生这种情况?

azure-sql-database

4
推荐指数
1
解决办法
2678
查看次数

在更改表期间耗尽事务日志空间

我正在运行一个更改表,更改包含近 3000 万行的表上的列,SQL Azure 在大约 18 分钟后失败,说 The session has been terminated because of excessive transaction log space usage. Try modifying fewer rows in a single transaction.

我猜不可能将其分解为一次修改更少的行,所以我想知道对数据库进行此更改的选项是什么。SQL Azure 不允许我更改事务日志的大小(限制为 1GB)。

我猜我最好的办法是创建一个具有新布局的新表,将数据迁移到该表中,删除原始表,然后重命名新表以匹配旧表的名称。如果是这种情况,如何最好地构建这些命令?

我们系统的计划停机时间目前不是问题,因此此操作可以根据需要进行。

alter-table azure-sql-database transaction-log

4
推荐指数
1
解决办法
6819
查看次数

我放在 SQL Azure 上的数据有多安全?

我的妻子一直要求我为她的企业创建一个 Web 应用程序,从我读到的内容来看,使用 SQL Azure 将是完美的。除了几个小的(真的很大)问题。

  • 她在金融行业工作,受到严格监管。
  • 她使用的数据非常敏感,必须将暴露风险降至最低。

所以我的问题是,如果我将她的公司信息放在 SQL Azure 上,它的安全性如何?我不是在询问一般的 SQL Server/Azure 安全性。我说的是这是一个共享空间。绕过我实施的安全措施,入侵数据的可能性有多大?

security azure-sql-database

4
推荐指数
1
解决办法
540
查看次数