标签: azure-sql-database

如何在 azure sql server 上更改管理员登录名

我有 myserver.database.windows.net 管理员登录 John。
我想把它改成彼得。
这是可能的,如果是这样,如何?

与本地 sql 服务器一起使用的更改在这里不起作用

更改登录 John WITH NAME=Peter

在此处输入图片说明

management azure-sql-database

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

从物理数据库迁移到云数据库

将在 Microsoft SQL server 2008R2 中创建的物理数据库移动到SQL Azure 有什么含义,该数据库利用诸如对 varchar(MAX) FILESTREAM BLOBS 的全文搜索等高级功能?

需要进行哪些架构更改?这一转变涉及哪些步骤?SQL Azure 迁移向导不能简单地成为自动进行转换的神奇工具。迁移工具无法解决哪些兼容性问题,应该“手动”解决?

sql-server azure-sql-database

11
推荐指数
1
解决办法
325
查看次数

在无需安装 SQL Server 的情况下为 SQL Azure 创建数据库图表的最佳方法是什么?

我在 SQL Azure 上有一个数据库,想为此创建一个数据库图表,但不想安装 SQL 服务器并复制数据库等。有什么方法可以做到这一点,有人知道吗?

sql-server azure-sql-database database-diagrams

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

我应该从数据库角色 db_owner 中删除 dbo 吗?

我今天对我的数据库进行了漏洞评估。我找到了 VA2108,它建议我

ALTER ROLE [db_owner] DROP MEMBER [dbo]
Run Code Online (Sandbox Code Playgroud)

但它是任何 SQL 实例的默认设置。

我应该去吗?有什么风险吗?

在此处输入图片说明

谢谢

security sql-server azure-sql-database vulnerability-assessment

11
推荐指数
2
解决办法
1953
查看次数

Azure SQL 数据库中的未知 _TransactionIndex 表

今天刚注意到我的 Azure SQL 数据库中有一个随机表,名为“_TransactionIndex_{guid}”

它有 1 列 Id,其中包含 8 个 GUID。

找不到有关此表的任何信息 - 它是什么?这是否意味着我的应用程序中的事务有问题?

sql-server azure-sql-database

10
推荐指数
1
解决办法
571
查看次数

基于时间戳的窗口偏移

我正在编写一个查询,用于对社交提要的结果进行分页。这个概念是移动应用程序将请求 N 个项目,并提供我在@CutoffTime下面调用的开始日期时间。截止时间的目的是确定分页窗口应该何时开始。我们使用时间戳而不是行偏移量的原因是,即使添加了较新的社交内容,时间戳也会让我们在获取较旧帖子时从一致的位置翻页。

由于社交提要项目可以来自您自己或您的朋友,因此我使用 aUNION来组合这两个组的结果。最初我尝试了TheQuery_CTE没有的逻辑UNION,结果很慢。

这就是我所做的(包括相关的表架构):

    CREATE TABLE [Content].[Photo]
(
    [PhotoId] INT NOT NULL PRIMARY KEY IDENTITY (1, 1), 
    [Key] UNIQUEIDENTIFIER NOT NULL DEFAULT NEWID(),
    [FullResolutionUrl] NVARCHAR(255) NOT NULL, 
    [Description] NVARCHAR(255) NULL, 
    [Created] DATETIME2(2) NOT NULL DEFAULT SYSUTCDATETIME(),
);

CREATE TABLE [Content].[UserPhotoAssociation]
(
    [PhotoId] INT NOT NULL, 
    [UserId] INT NOT NULL, 
    [ShowInSocialFeed] BIT NOT NULL DEFAULT 0,

    CONSTRAINT [PK_UserPhotos] PRIMARY KEY ([PhotoId], [UserId]), 
    CONSTRAINT [FK_UserPhotos_User] FOREIGN KEY ([UserId]) 
        REFERENCES [User].[User]([UserId]), 
    CONSTRAINT [FK_UserPhotos_Photo] …
Run Code Online (Sandbox Code Playgroud)

sql-server azure-sql-database window-functions paging

10
推荐指数
1
解决办法
255
查看次数

优化 2,135,044,521 行表上的索引

我有一张大表的 I/O 问题。

一般统计

该表具有以下主要特征:

  • 环境:Azure SQL 数据库(层为 P4 Premium (500 DTU))
  • 行数:2,135,044,521
  • 1,275 个已用分区
  • 聚集索引和分区索引

模型

这是表的实现:

CREATE TABLE [data].[DemoUnitData](
    [UnitID] [bigint] NOT NULL,
    [Timestamp] [datetime] NOT NULL,
    [Value1] [decimal](18, 2) NULL,
    [Value2] [decimal](18, 2) NULL,
    [Value3] [decimal](18, 2) NULL,
    CONSTRAINT [PK_DemoUnitData] PRIMARY KEY CLUSTERED 
    (
        [UnitID] ASC,
        [Timestamp] ASC
    )
)
GO

ALTER TABLE [data].[DemoUnitData] WITH NOCHECK ADD CONSTRAINT [FK_DemoUnitData_Unit] FOREIGN KEY([UnitID])
REFERENCES [model].[Unit] ([ID])
GO

ALTER TABLE [data].[DemoUnitData] CHECK CONSTRAINT [FK_DemoUnitData_Unit]
GO
Run Code Online (Sandbox Code Playgroud)

分区与此有关:

CREATE PARTITION SCHEME [DailyPartitionSchema] …
Run Code Online (Sandbox Code Playgroud)

performance sql-server index-tuning azure-sql-database query-performance

10
推荐指数
1
解决办法
276
查看次数

为什么我的 Azure SQL (SQL Server) 数据库会在一段时间内因数据 IO 过载?

我在 S2 版本 (50 DTU) 下运行 Azure SQL 数据库。正常使用服务器通常会挂在10%左右的DTU。但是,此服务器会定期进入一种状态,它将在数小时内将数据库的 DTU 使用率发送到 85-90%。然后突然间它恢复到正常的 10% 使用率。

在此处输入图片说明

在这种过载状态下,应用程序对服务器的查询似乎仍在快速运行。

我可以从 S2 => 任何东西(例如 S3) => S2 扩展服务器,它似乎清除了它挂在的任何状态。但是几个小时后它会再次重复相同的过载状态循环。我注意到的另一件奇怪的事情是,如果我在 S3 计划 (100 DTU) 24/7 上运行此服务器,我没有观察到这种行为。只有当我将数据库缩小到 S2 计划 (50 DTU) 时才会出现这种情况。在 S3 计划中,我始终保持 5-10% 的 DTU 使用率。显然没有得到充分利用。

我已经检查了 Azure SQL 查询报告以查找恶意查询,但我并没有真正看到任何异常,它显示我的查询使用资源,正如我所期望的那样。

在此处输入图片说明

正如我们在这里看到的,使用量都来自数据 IO。如果我在此处更改性能报告以显示 MAX 的顶级数据 IO 查询,我们会看到:

在此处输入图片说明

查看这些长期运行的查询似乎指向统计更新。并不是真正从我的应用程序运行的任何东西。例如,查询 16302 显示:

SELECT StatMan([SC0], [SC1], [SC2], [SB0000]) FROM (SELECT TOP 100 PERCENT [SC0], [SC1], [SC2], step_direction([SC0]) over (order by NULL) AS [SB0000]  FROM (SELECT [UserId] AS [SC0], [OrganizationId] AS …
Run Code Online (Sandbox Code Playgroud)

sql-server statistics azure-sql-database

10
推荐指数
1
解决办法
5131
查看次数

键之间基数差异较大的表的基数估计

语境

我偶然发现了 SQL Azure 中的一个问题,其中Sort-operator 由于行估计不佳而溢出到 TempDB 中。

  • 我们正在查询与多个明细表连接的主表
  • 该表使用TenantId-column 对每个租户的表进行分区
  • 有些租户有 10,000 行,有些只有 100 行。
  • 有一个行级安全策略,可以为FILTER PREDICATE上述所有查询添加一个TenantId
  • 查询由 .NET 应用程序中的实体框架生成
  • 所有索引统计数据都是最新的
  • 所有明细表行都通过Index Seeks检索

问题

由于租户之间的行数差异很大,基数估计器产生的估计值非常低。这与两个内部连接相结合,进一步减少了估计,使得实际产生 3600 行的查询预计只产生 3。这是 3 个数量级的下降。

我尝试了什么?

  1. Filtered Statistics为那些产生大量行的键值定义,作为对 CE 的额外提示。
  2. 在处理参数化查询时遇到了限制。这OPTION ( RECOMPILE )适用于某些谓词,但不适用于TenantId通过上述安全策略注入的谓词。
  3. 内联过滤器谓词,因此我们在同一列上有效过滤两次有效,但似乎......至少可以说是多余的
  4. INNER JOINs更改为s 可以LEFT OUTER JOIN改善错误连接估计,但由于我们使用实体框架,我更喜欢不需要更改查询的解决方案。注意:显然,如果唯一的方法是重写查询,那么这就是我们将要走的路线。

其他想法

  • 我曾考虑过添加一个包含 10 万条记录的虚拟租户来抵消估计值的想法,这样行估计值至少对于最大的真实租户来说足够大,但这会使我们对小租户的估计过高。

我在寻找什么?

  • 我做错了什么 - 我把自己画到了一个角落里吗?
  • 有没有我可以考虑的替代方案?

我欢迎您的任何想法,谢谢!


排序运算符用于分页。我实际上不想检索所有行。所以简而言之,排序需要发生在数据库中(而不是在应用程序中)。

另外,要明确的是,这里的问题不是 EF 生成的查询。这是一个简单的查询,带有许多INNER/ …

sql-server statistics azure-sql-database cardinality-estimates

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

筛选条件未正确应用于聚集列存储索引

使用下面的示例,谓词是相同的,但是顶部语句(正确)返回 0 行,底部语句返回 1 - 即使谓词不匹配:

declare @barcode nchar(22)=N'RECB012ZUKI449M1VBJZ'  
declare @tableId int = null
declare @total decimal(10, 2) = 5.17

SELECT 1
FROM
    [dbo].[transaction] WITH (INDEX([IX_Transaction_TransactionID_PaymentStatus_DeviceID_DateTime_All]))
WHERE
    Barcode = @barcode
    AND StatusID = 1
    AND TableID = @tableID
    AND @total <= Total

SELECT 1
FROM
    [dbo].[transaction] 
WHERE
    Barcode = @barcode
    AND StatusID = 1
    AND TableID = @tableID
    AND @total <= Total
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况?

更多信息:

  • top 语句中的非聚集索引未过滤
  • CheckDB 返回 0 个问题
  • 服务器版本: Microsoft SQL Azure (RTM) - 12.0.2000.8 Dec 19 2018 …

sql-server azure-sql-database columnstore

10
推荐指数
2
解决办法
583
查看次数