我有一个有几行的存储过程:
AND ( @StartDate IS NULL OR @StartDate <= r.ReferralDate )
AND ( @EndDate IS NULL OR @EndDate >= r.ReferralDate )
Run Code Online (Sandbox Code Playgroud)
是否应该改写为:
AND ( r.ReferralDate >= @StartDate or @Startdate IS NULL )
AND ( r.ReferralDate <= @EndDate or @EndDate IS NULL )
Run Code Online (Sandbox Code Playgroud)
我尝试了两种方法并查看执行计划。估计的行数略有不同,但除此之外我没有看到任何变化,所以我认为语句中的顺序无关紧要,但希望有人可以验证。
所以我有两个表的数据库。并且它们之间有外键关系。我想做一些测试,但桌子太大了。我想删除这些表中的大部分数据,只在第一个表中保留大约 500 行,在第二个表中保留相关行,这样测试会更快。我怎样才能做到这一点?
我是我公司的一名非常专业的 DBA,并运行了 sp_Blitz 脚本(在我们的一个测试数据库上,它是我们生产数据库的精确副本),我只收到消息“命令成功完成。”。
我没有得到更详细的输出有什么原因吗?还是输出文件写在其他地方?
作为某些增强功能的一部分,750 多个表中添加了一个新列。现在我的问题是在将近 3000 多个存储过程中,一些旧的 INSERT 没有命名列。
有什么办法可以得到所有没有列名插入的存储过程的“列表”?
我试过了:
SELECT OBJECT_NAME(object_id)
FROM sys.sql_modules
WHERE definition LIKE '%insert into%'
AND definition NOT LIKE '%) value%'
AND definition NOT LIKE '%)%' + CHAR(10) + '%value%'
AND definition NOT LIKE '%)%' + CHAR(13) + '%value%'
AND definition LIKE '%value%'
Run Code Online (Sandbox Code Playgroud)
但它仍然错过了很多。
PS - 上面的查询也返回 Insert Into (ColumnNames) SELECT 场景,这是我不想要的。
使用 Developer Edition 和 Live with Standard Edition 的开发环境是否危险,二进制文件是否不同?
我只有一张桌子Insert,Delete而且Select(没有Update)
在插入时,有时使用会话锁 ( WITH (TABLOCKX))
我有一个使用 ADO 的程序,它Select从表中使用RecordSet::Open命令打开一个简单的顺序查询。
喜欢:
Select * from t1 where id >= @from_id And >= @to_id`
Run Code Online (Sandbox Code Playgroud)
或者:
Select top(10) * from t1 where id >= @id Order by id
Run Code Online (Sandbox Code Playgroud)
id 列是一Identity列。
当我打开查询时,有时会陷入僵局。(表被Insert查询锁定,id 列的索引被 锁定Select)
我正在努力防止僵局。
我应该打开选择查询WITH(NOLOCK)吗?它可以防止死锁吗?
使用 SQL Server SQL Profiler,可以使用哪些配置来监视单个存储过程?我想捕获所有EXEC sprocName以包含参数列表。我想捕获这个过程,以便我可以使用真实的参数数据对其进行负载测试。
我在新的 SQL Profiler 跟踪中尝试了以下操作:
Events Selection > Column Filters > Text Data > LIKE: 'exec sprocName%'
Events Selection > Column Filters > Text Data > LIKE: 'exec sprocName'
Run Code Online (Sandbox Code Playgroud)
上述配置均未捕获我的程序。我还尝试使用以下配置删除过程名称:
Events Selection > Column Filters > Text Data > LIKE: 'exec%'
Events Selection > Column Filters > Text Data > LIKE: 'exec'
Run Code Online (Sandbox Code Playgroud)
以上配置不捕获任何程序。
最后,我尝试在没有任何列过滤器的情况下执行相同的配置文件,我可以确认它捕获了发送到 SQL Server 的所有 SQL 查询。
我已经考虑了一种解决方法,即使用 SQL 查询或 Excel Power Query 捕获所有存储过程执行和后过滤到我感兴趣的 sproc。但是,在我想要建模的环境中执行 sproc 的频率很高,这使得这不可行。
我有一个查询,它首先计算要返回的行数,如果它低于限制,则返回这些行,否则不返回任何内容。
对于上下文:我有一张地图,仅在某个缩放级别后才显示一些点。但是,我的用户现在希望地图只要屏幕上有空间就显示点,而不是具有预定义的最小缩放级别。这意味着现在每当他们在地图上移动时,我都会有两个查询,而不是一个:一个是知道有多少项目,另一个是实际返回它们。负载可能会翻倍。我想过这样做:
SELECT p.ACOLUMN, p.ANOTHERCOLUMN, p.LATITUDE, p.LONGITUDE
FROM table p
where p.LATITUDE < @latMax)
and p.LATITUDE > @latMin)
and p.LONGITUDE < @lngMax)
and p.LONGITUDE > @lngMin)
and (SELECT count(*)
FROM table
where LATITUDE < @latMax
and LATITUDE > @latMin
and LONGITUDE < @lngMax
and LONGITUDE > @lngMin)) < 200 -- example limit value
Run Code Online (Sandbox Code Playgroud)
查看实际执行计划,我看到 SQL Server 2017 在同一个索引上搜索了两次:
它当然也在两个搜索中读取相同数量的行。有没有办法删除那些重复的搜索?或者是否有另一种更理想的方式来做我正在尝试的事情?
有人可以让我知道我们如何识别 SQL 服务器中是否安装了复制组件。
试过如下:
1.我们之前更改了服务器名称,因此在检查配置分发服务器和发布时给出以下警告。
SQL Server 无法连接到服务器“xxxxxxxx”。
附加信息:
SQL Server 复制需要实际的服务器名称才能连接到服务器。指定实际的服务器名称“zzzzzzzzz”。(复制。实用程序)
我将重命名服务器。
Microsoft SQL Server Management Studio 无法访问复制组件,因为此 SQL Server 实例上未安装复制。有关安装复制的信息,请参阅 SQL Server 联机丛书中的安装复制主题。
附加信息:
此服务器上未安装复制组件。再次运行 SQL Server 安装程序并选择安装复制的选项。(Microsoft SQL Server,错误:21028)
现在,请建议 SQL 实例中是否安装了 Replication 组件
我的公司正在进行 IT 大修,并考虑从 MS SQL Server(2016 标准版)转移到 MySQL 数据库(版本 5.6.10)。我已经使用 MS SQL Server 多年了,所以我很担心做出这个举动。基本上 - 我们的 IT 团队认为 MySQL 是免费的,并且只进行了一些语法更改。
我花了一天的时间阅读这些差异,老实说发现它们似乎非常相似。如果我要为 MS SQL Server 做一个案例 - 那么现在是时候去做了。一个关键细节——我们是一家分析公司,我们的 SQL 查询通常很复杂——所以我需要确保我们未来的 RDBMS 达到标准。
我多次遇到以下语句(关于过滤),我需要翻译。我对此的解释是,不可能使用单个查询来连接来自不同数据库的表。但是我看过 YouTube 视频,人们在 MySQL 中就是这样做的。请帮助我理解这种差异以及它是否重要。
MySQL 允许用户以多种方式过滤表、行和用户。但它需要用户按单个数据库过滤表、行或用户。在过滤数据时,开发人员必须通过运行多个查询来单独过滤数据库表。另一方面,SQL Server 使开发人员能够利用基于行的筛选。基于行的过滤选项按数据库方式过滤数据库上的数据。此外,过滤后的数据存储在单独的分发数据库中。因此,程序员在不考虑数据库数量的情况下过滤多行变得更加容易。
非常感谢您帮助破译引用的声明以及您看到的此举动的任何优点/缺点。谢谢!
sql-server ×10
t-sql ×2
deadlock ×1
delete ×1
mysql ×1
nolock ×1
performance ×1
profiler ×1
replication ×1
sp-blitz ×1