小编Eri*_*rik的帖子

升级生产RDS实例的最佳方式是什么?

我有 MySQL 小型 RDS 实例作为我的生产系统的一部分,我想将它升级到具有提供 IOPS 的中型实例。

作为老派 DBA,我知道“添加从属;提升为主;切换客户端”方法,但 AWS 承诺提供神奇的一键升级路径,即“升级实例”、“添加提供的 IOPS”。

在测试 RDS 实例上试过这个,停机时间太长,恕我直言:小-> 中升级大约需要 5 分钟,切换到提供的 IOPS 需要 30 分钟 (!!!)。

  • 这是正常行为吗?
  • 有什么方法可以在不停机的情况下在生产 RDS 上运行升级?
  • 您是否推荐“停止;创建快照;从快照恢复到更大的实例”的方式?

mysql amazon-rds

39
推荐指数
3
解决办法
4万
查看次数

是否可以强制优化器消除此分区视图中的不相关表?

我正在为大表测试不同的体系结构,我看到的一个建议是使用分区视图,将大表分解为一系列较小的“分区”表。

1 , 2 , 3 , 4

在测试这种方法时,我发现了一些对我来说没有多大意义的东西。当我过滤事实视图上的“分区列”时,优化器只查找相关表。此外,如果我过滤维度表上的那一列,优化器会消除不必要的表。

但是,如果我过滤维度的其他方面,优化器会在每个基表的 PK/CI 上寻找。

以下是相关查询:

select 
    od.[Year], 
    AvgValue = avg(ObservationValue)
from dbo.v_Observation o 
join dbo.ObservationDates od
    on o.ObservationDateKey = od.DateKey
where o.ObservationDateKey >= 20000101
    and o.ObservationDateKey <= 20051231
group by od.[Year];

select 
    od.[Year], 
    AvgValue = avg(ObservationValue)
from dbo.v_Observation o 
join dbo.ObservationDates od
    on o.ObservationDateKey = od.DateKey
where od.DateKey >= 20000101
    and od.DateKey <= 20051231
group by od.[Year];

select 
    od.[Year], 
    AvgValue = avg(ObservationValue)
from dbo.v_Observation o 
join dbo.ObservationDates od
    on o.ObservationDateKey = od.DateKey …
Run Code Online (Sandbox Code Playgroud)

sql-server partitioning sql-server-2014

22
推荐指数
2
解决办法
853
查看次数

为什么 TVP 必须是 READONLY,为什么其他类型的参数不能是 READONLY

根据此博客,函数或存储过程的参数如果不是OUTPUT参数,则本质上是按值传递的,如果它们是参数,则基本上被视为按引用传递的更安全版本OUTPUT

起初我认为强制声明 TVP 的目的READONLY是向开发人员明确表示 TVP 不能用作OUTPUT参数,但必须有更多的进展,因为我们不能将非 TVP 声明为READONLY. 例如以下失败:

create procedure [dbo].[test]
@a int readonly
as
    select @a
Run Code Online (Sandbox Code Playgroud)

消息 346,级别 15,状态 1,过程测试
参数“@a”不能声明为 READONLY,因为它不是表值参数。

  1. 由于统计信息未存储在 TVP 上,因此阻止 DML 操作的基本原理是什么?
  2. 是否与OUTPUT出于某种原因不希望 TVP 成为参数有关?

sql-server parameter table-variable table-valued-parameters

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

应用程序中的 Azure SQL 数据库“用户登录失败”,但在 SSMS 中工作正常

我想在 Azure SQL 数据库 V12 上试用包含的数据库用户功能,但是我遇到了一个对我来说似乎很奇怪的身份验证问题。

我创建了一个名为Classifier. 我将我的 IP 添加到防火墙规则中,以便我可以从工作站上的 SSMS 连接到 Azure db 服务器。一旦我能够通过 SSMS 连接以进行管理,我尝试向数据库添加一个带有密码的用户,如下所示:

CREATE USER classifier WITH PASSWORD='thepassword'
Run Code Online (Sandbox Code Playgroud)

我还将此用户添加到数据写入者和读取者角色中:

exec sp_addrolemember 'db_datawriter', 'classifier'
exec sp_addrolemember 'db_datareader', 'classifier'
Run Code Online (Sandbox Code Playgroud)

在此之后,我可以使用来自 SSMS 的这些凭据连接到数据库:

在此处输入图片说明

但这就是事情出错的地方:我尝试了几种不同的连接字符串咒语,但似乎无法在我正在开发的网络应用程序中建立连接。它在 Azure 环境中不起作用,所以我在 localhost 上运行,并带有到 Azure 数据库的连接字符串,但它无法连接。这是我目前使用的连接字符串:

<add name="Classifier" connectionString="Data Source=xxxxxxx.database.secure.windows.net;Initial Catalog=Classifier;User ID=classifier;Password=xxxxxxxxxxxxx;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;" providerName="System.Data.SqlClient"/>
Run Code Online (Sandbox Code Playgroud)

我尝试为用户重置密码(通过 SSMS),然后更新连接字符串;我还通过将密码从该连接字符串中复制到 SSMS 中的连接对话框中来仔细检查密码,以确保那里没有某种类型的拼写错误。

我在 Azure db 服务器中启用了审计,希望得到一些关于它失败原因的详细信息,但我得到的只是:

错误 18456,级别 14,状态 1,Sever SQL Azure,第 1 行用户“分类器”登录失败

这就是我被困的地方。我通过文档或博客找到的大部分内容表明要做的是查看 SQL Server 日志以查看真正的错误状态是什么,这将更狭隘地表明失败的性质,但是由于我正在处理 Azure 没有办法做到这一点(据我所知)。

什么会导致应用程序在 SSMS(以及 LinqPad 和 Visual Studio Server Explorer,顺便说一句)成功的情况下失败?

authentication azure-sql-database connections

19
推荐指数
2
解决办法
4万
查看次数

实体关系问题

我有 4 个这样相关的表(这是一个例子):

Company:
ID
Name
CNPJ

Department:
ID
Name
Code
ID_Company 

Classification:
ID
Name
Code
ID_Company

Workers:
Id 
Name
Code
ID_Classification
ID_Department
Run Code Online (Sandbox Code Playgroud)

假设我有一个classificationwith id = 20, id_company = 1。并且departmentid_company = 2(代表另一家公司)。

这将允许创建来自两个公司的工人,因为分类和部门分别链接到公司。我不希望这种情况发生,所以我认为我的人际关系有问题,我不知道如何解决。

database-design constraint

18
推荐指数
2
解决办法
1052
查看次数

SQL Server Isnull 当字段为空时返回 1900-01-01

当 DOB 字段为空时,以下代码返回 1900-01-01。我想要(并期望)它返回一个空字符串(''),但事实并非如此。我应该如何继续获得我想要的结果?

isnull(convert(date,DOB,1),'')
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2012 datetime

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

使用 75% 的总时间查询“创建排序索引”的 MySQL 配置文件

我们试图弄清楚如何优化查询(大约需要 100 毫秒),并运行我们看到Creating Sort Index使用75%的总时间的配置文件。首先,究竟是什么影响了创建排序索引?是磁盘/io吗?

其次,我们可以对查询本身进行任何优化吗?

SELECT r.`id`, 
       r.name, 
       r.public_uri, 
       rv.version, 
       rv.interpreter, 
       rv.notes, 
       rv.content, 
       r.added, 
       r.added_by, 
       r.modified, 
       r.modified_by, 
       r.public, 
       r.public_by
  FROM recipe_heads rh, 
       recipes r, 
       recipe_versions rv
 WHERE rh.recipe = r.`id` 
   AND rh.recipe_version = rv.`id` 
   AND r.`id` = rv.recipe
ORDER BY r.added DESC
Run Code Online (Sandbox Code Playgroud)

解释: 截屏

mysql profiler

16
推荐指数
2
解决办法
6万
查看次数

如何让 Brent Ozar 的 sp_BlitzIndex 在 Azure 上运行?

我从 Brent Ozar 的网站下载了 SQL Server First Aid Kit。当我以Azure 数据库服务器级别管理员身份登录时,当我尝试通过 Microsoft Sql Server Management Studio 针对我的主数据库运行sp_BlitzIndex脚本时,出现以下错误:

消息 262,级别 14,状态 18,过程 sp_BlitzIndex,第 18 行 CREATE PROCEDURE 权限在数据库“master”中被拒绝。

我在要测试的数据库实例上成功创建了该过程。当我执行该程序时,我收到一条错误消息:

消息 50000,级别 16,状态 1,第 1265 行无效的对象名称“mydatabase.sys.partitions”。

接下来我尝试聪明一点,直接对master数据库运行存储过程代码,而不创建存储过程,得到以下错误:

此版本的 SQL Server 不支持消息 50000,级别 15,状态 1,第 1267 行引用“mydatabase.sys.indexes”中的数据库和/或服务器名称。

我没有足够的信心开始玩弄约 2700 行索引启发式逻辑的内部工作原理。是否有一种快速、简单的方法可以让这个存储过程在 Azure SQL 数据库上很好地工作,或者我应该在别处寻找索引分析工具/存储过程?

t-sql azure-sql-database azure-sql-database-v11 sp-blitzindex

14
推荐指数
1
解决办法
2029
查看次数

条件外键关系

我目前在两个实体之间有一个外键,我想让这种关系以其中一个表的 entityType 为条件。这是表的层次结构,这是通过从子级到父级的FK 引用完成的

                  Store
            /                \
  Employees                    \
                             TransactionalStores
                            /       |         \
                     Kiosks         |          BrickMortars
                                 Onlines
Run Code Online (Sandbox Code Playgroud)

我目前有从员工到商店的 FK 关系

ALTER TABLE Employees ADD CONSTRAINT Employee_Store
            FOREIGN KEY (TransStoreId)
            REFERENCES TransactionalStores(StoreId)
Run Code Online (Sandbox Code Playgroud)

我想添加条件:

WHERE TransactionalStores.storeType != 'ONLINE_TYPE'
Run Code Online (Sandbox Code Playgroud)

这是可能的还是我必须将 TransactionalStores 子类化为两个新的子类型(例如 PhysicalStores 和 VirtualStores)

postgresql foreign-key database-design constraint

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

我可以知道何时以及谁在 Azure 上将我的数据库从 v11 更新到 v12?

今天早些时候,我注意到我所有的 Azure SQL 数据库服务器都从 v11 更新到了 v12。我是公司中唯一应该接触这些拨号的人,但不是我公司中唯一可以访问的人。由于这次升级不是我发起的,我想知道是谁发起的,以及这个计划外的更新是什么时候发生的。


我知道我可以写一封电子邮件给我公司的每个人,并礼貌地向WTF询问信息,但我宁愿用尽可能多的事实开始对话。另外,我倾向于认为这是 Microsoft/Azure SNAFU,因为升级所有服务器感觉太刻意了。

audit upgrade azure-sql-database

14
推荐指数
1
解决办法
557
查看次数