标签: sql-server

为什么此查询会抛出“无效的列名”错误?

尝试运行一个简单的 UPDATE 查询,如下所示:

UPDATE [TILL].[dbo].[appParameters] 
SET [TILL].[dbo].[appParameters].[ParameterValue] = "1" 
WHERE [TILL].[dbo].[appParameters].[ParameterName] = "StaffTablesRefreshed"
Run Code Online (Sandbox Code Playgroud)

如果该字段[ParameterName]是值"StaffTablesRefreshed",则将 的值设置[ParameterValue]"1"

执行时,SQL Server 抛出错误:

列名“StaffTablesRefreshed”无效

两者都是[ParameterName]和。[ParameterValue]nvarchar(255)

我在这里遗漏了一些明显的东西吗?

谢谢,肯

sql-server query

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

Azure sql 数据库在某些表上授予选择权限

我已在 SSMS 的 Azure sql 数据库中创建了一个用户。现在尝试向该用户授予对数据库中某些表的选择权限。安全控制选项似乎与本地 SQL Server 有很大不同。如何在 Azure 数据库上执行这些操作?

我已经在本地 SQL Server 上尝试过了,效果很好。但在 azure sql 数据库上运行这些时出现错误。

    USE [master]
    GO
    CREATE LOGIN [jnj_user] WITH PASSWORD=N'P2ssw0rd123', DEFAULT_DATABASE=[CRM], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
    GO
    USE [CRM]
    GO
    CREATE USER [jnj_user] FOR LOGIN [jnj_user]
    GO
Run Code Online (Sandbox Code Playgroud)

错误:

    Msg 40517, Level 16, State 1, Line 3
    Keyword or statement option 'default_database' is not supported in this version of SQL Server.
    Msg 40508, Level 16, State 1, Line 5
    USE statement is not supported to switch between databases. …
Run Code Online (Sandbox Code Playgroud)

sql-server azure-sql-database azure

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

关于透明数据加密的澄清

这是我们第一次在至关重要的生产数据库上应用 TDE,我有以下问题。

当 TDE 正在进行时:

  1. 我们仍然可以使用连接字符串访问正在该数据库上运行的应用程序吗?
  2. 如果 TDE 在加密数据库时失败,是否会破坏 .mdf 文件?我将如何恢复数据库?
  3. .ldf 和 .mdf 是否仍然可以访问,我们可以读取和写入这些文件吗?
  4. TDE进行过程中哪些数据库操作会受到影响?
  5. TDE 会对磁盘使用产生影响吗?
  6. TDE对数据库备份有影响吗?如果启用 TDE,.bak、.trn 文件是否都会自动加密?
  7. 在应用TDE的过程中,我们需要重点关注哪些方面?是否需要停电?
  8. 对 SQL Server 服务包或累积更新会有影响吗?

相关平台是具有可用性组的 SQL Server 2014 SP2 GDR。

sql-server encryption availability-groups transparent-data-encryption sql-server-2014

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

Azure SQL 数据库和数据库维护

例如,如果 SQL 代理不适用于 Azure SQL 数据库,那么是否可以使用 Ola Hallengren 的维护脚本来维护(索引、统计等)数据库?

sql-server maintenance statistics azure-sql-database index-maintenance

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

设置 SQL Server 开发人员版

我刚刚安装了 SQL Server Developer Edition 和 SQL Server Management Studio,如何配置服务器?我想将其配置为服务器名称为 localhost-sql-server,并带有登录名/密码。我找到了配置管理器,但不确定在哪里可以修改它。

sql-server installation configuration

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

如何判断运行的SQL Server是否是Express版本?

有没有办法检查我连接的SQL Server是否是Express版本?

如何查看 SQL Server Express 达到 10GB 限制之前还剩下多少空间?

谢谢你!

sql-server

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

TRY .. CATCH 有时无法捕获主键违规

我编写了代码将记录更新到数据库。数据库是Azure DB,S4层。

更新和插入有时是高度并发的,因为它来自执行太多更新的应用程序。

该代码在大多数情况下都能成功运行,但有时会抛出 2627 异常(在 CATCH 语句内部处理)。到目前为止还无法弄清楚可能是什么问题。

我可以用 MERGE 语句替换它,但是我不太喜欢它,并且还想弄清楚这个 try and catch 发生了什么。

SET nocount ON;
IF NOT EXISTS(SELECT * FROM MyTable WHERE ID = @ID)
BEGIN TRY
INSERT INTO Table(ID, Value, TimeChanged) VALUES (@id, 'xxx', GETDATE())
END TRY
BEGIN CATCH
IF @@Error <> 2627 ----Violation of PRIMARY KEY constraint
THROW;
END CATCH

UPDATE MyTable SET Value = 'xxx' WHERE ID = @ID AND TimeChanged < GETDATE()

Run Code Online (Sandbox Code Playgroud)

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

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

在 ssms 上编写索引脚本时不显示数据压缩

当我右键单击 SSMS 并选择编写创建索引的脚本时:

在此输入图像描述

我得到这个脚本,没有 data_compression:

USE [APCore]
GO

/****** Object:  Index [i_agencyId]    Script Date: 07/11/2019 12:18:13 ******/
CREATE UNIQUE NONCLUSTERED INDEX [i_agencyId] ON [agy].[agency]
(
    [agencyId] ASC
)
INCLUDE (   [countryCode]) WITH (PAD_INDEX = OFF, 
STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, 
DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, 
ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 100) ON [NONCLUSTERED_INDEXES]
GO
Run Code Online (Sandbox Code Playgroud)

但是,当使用下面的查询专门检查数据压缩时

use APCore
go

SELECT i.name, p.data_compression_desc 
 FROM sys.partitions P
 INNER JOIN sys.indexes I ON I.object_id = …
Run Code Online (Sandbox Code Playgroud)

index sql-server ssms compression sql-server-2016

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

第二个计算标量的解释

我注意到一个奇怪的事情。这个查询

declare @t int = 3;

select distinct top(@t) 
    Number - Number + ABS(CHECKSUM( CAST(NEWID() as binary(16)) ))
from Numbers as n;
Run Code Online (Sandbox Code Playgroud)

制定这个计划

在此输入图像描述

dbo.Numbers 是一个标准的 Numbers 表 - 只是具有聚集主键的连续整数列表 - 包含 100k 行。

有两个计算标量运算符。右边的计算Number - Number并定义一个内部表达式。左边的执行加法和内部函数调用。奇怪的是,如果重写为,则只有一个计算标量运算符

Number + ABS(...) - Number
Run Code Online (Sandbox Code Playgroud)

这里发生了一些“有趣”的事情吗?或者这是解析器如何从备忘录构建执行计划的简单产物?两种形式都在 search(1) 中完成编译。使用 TF8677 强制搜索(2) 不会改变行为。TF8606 显示项目标准化后树中的分离。

我不认为这是一个问题。我只是想知道这里是否有值得学习的东西。

一些背景

我想生成一个固定长度的随机数列表。这

ABS(CHECKSUM(NEWID()))
Run Code Online (Sandbox Code Playgroud)

似乎是要走的路。我有一个 Numbers 表(有 100k 行),因此使用它来驱动输出似乎是合理的。我想要不进行替换的采样,因此 DISTINCT 将确保没有重复项,并且 TOP() 将给出所需的结果集大小。把它放在一起我得到

declare @t int = 3;

select distinct top(@t) 
    ABS(CHECKSUM(NEWID()))
from Numbers as n;
Run Code Online (Sandbox Code Playgroud)

遗憾的是,该计划是使用哈希匹配(聚合)进行聚集索引扫描。最好只读取所需的最小行数,也许可以使用 Flow Distinct 来强制唯一性。 …

sql-server optimization sql-server-2019

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

SQL Server 始终开启修补

Always on(SQL Server 2016) 在四个独立服务器 Server1、Server2、Server3、Server4 之间配置。这些服务器包含一个可用性组 (AG01),其中包含 3 个数据库。如何为这些服务器打SQL Server补丁?我们需要在同一天为所有服务器应用补丁吗?这些服务器是生产服务器。

sql-server availability-groups

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