你怎么知道一个索引应该有多少“填充”?
我有一台刚刚重新启动的服务器,并使用以下命令验证了哪些跟踪标志处于活动状态DBCC TRACESTATUS:
跟踪标志:3688 功能:将有关跟踪开始和停止的消息删除到错误日志
在这里您可以看到每个跟踪标志的作用。
启动参数如下:
题:
如何通过 T-SQL 找到 SQL Server 服务的启动参数?
我有一些 SQL Server 机器无法连接到任何外部站点。
我在管理数据库时越来越多地使用 PowerShell,所以我肯定需要安装这个模块,以便我可以使用我的 PowerShell 例程。
事实证明,在这些离线机器上安装 SQL Server 模块很困难。
当我尝试安装模块时:
该SqlServer模块要求提供NuGet 模块包:
然后我得到了这片红色字母的海洋和以下错误消息,如下图所示:
警告:无法从 URI“ https://go.microsoft.com/fwlink/?LinkID=627338&clcid=0x409 ”下载到“”。
警告:无法下载可用提供程序的列表。检查您的互联网连接。PackageManagement\Get-PackageProvider:无法找到包提供程序“NuGet”。
它可能尚未导入。尝试“Get-PackageProvider -ListAvailable”。
在 C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:7415 char:30 + ... tProvider = PackageManagement\Get-PackageProvider -Name $script:NuGet ...
此 PowerShell 模块安装的解决方法是什么?
我在创建 tempDB 文件时遇到以下 sql server 错误。有任何想法吗?
连接已断开且无法恢复。客户端驱动程序尝试恢复连接一次或多次,但所有尝试均失败。增加 ConnectRetryCount 的值可增加恢复尝试的次数。(微软 SQL Server,错误:0)
这似乎是一个基本问题,但我找不到任何答案 - 我需要能够从链接服务器获取服务器名称/实例等。我尝试了几件事:
select <linked server>.@@SERVERNAME;
select <linked server>.SERVERPROPERTY('ServerName');
Run Code Online (Sandbox Code Playgroud)
......但没有快乐。有任何想法吗?
这是SQL 2008 R2& 2014(2008R2是链接服务器)
编辑:错误是:
消息 102,级别 15,状态 1,第 2 行“@@SERVERNAME”附近的语法不正确。
当您想在过滤索引中放置 OR 时,是否有解决方法?
create index FIDX_tblbOrders_sdtmOrdCreated_INCL
on dbo.tblBOrder(sdtmOrdCreated)
INCLUDE (sintMarketID,
strCurrencyCode,
sintOrderStatusID
)
WHERE ((sintMarketId=1)
AND ( (sintOrderStatusId < 9) OR (sintOrderStatusId > 14)))
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建上面的索引,因为我对 sintOrderStatusId IN (9-14) 的任何情况都不感兴趣
当然,我可以创建视图或索引视图,但我试图避免这种情况。
只是添加更多信息:sintOrderStatusId 是 smallint NOT NULL 并且可能的值范围从 1 到 30。要避免 9 到 14,因此过滤索引。
对于这种特定情况,我将在下面尝试解释,使用表变量比不使用表变量性能更好。
我想知道为什么,如果可能的话,去掉表变量。
这是使用表变量的查询:
USE [BISource_UAT]
GO
set statistics io on
SET STATISTICS TIME ON
SET NOCOUNT ON;
DECLARE @OrderStartDate DATETIME = '15-feb-2015'
DECLARE @OrderEndDate DATETIME = '28-feb-2016'
DECLARE @tmp TABLE
(
strBxOrderNo VARCHAR(20)
,sintReturnId INT
)
INSERT INTO @tmp
SELECT strBxOrderNo
,sintReturnId
FROM TABLEBACKUPS.dbo.tblBReturnHistory rh
WHERE rh.sintReturnStatusId in ( 3 )
AND rh.dtmAdded >= @OrderStartDate
AND rh.dtmAdded < @OrderEndDate
SELECT
op.lngPaymentID
,op.strBxOrderNo
,op.sintPaymentTypeID
,op.strCurrencyCode
,op.strBCCurrencyCode
,op.decPaymentAmount
,op.decBCPaymentAmount
,ap.strAccountCode
,o.sintMarketID
,o.sintOrderChannelID
,o.sintOrderTypeID
,CASE WHEN opgv.lngpaymentID IS NULL THEN NULL
-- Not …Run Code Online (Sandbox Code Playgroud) performance sql-server sql-server-2014 temporary-tables table-variable query-performance
我正在使用 sql server 2005,我遇到了可以在参数中传递许多值的情况。
基于此:为一个 SQL 参数传递多个值此过程使用 XML 作为参数。
这是存储过程的代码:
CREATE PROCEDURE [DENORMV2].[udpProductBulletPointSelectByTier1NoteTypeCode] (
@Tier1 VARCHAR(10),
@LanguageID INT,
@SeasonItemID VARCHAR(5) = NULL,
@ListNoteTypeCode XML,
@CacheDuration INT OUTPUT )
WITH EXECUTE AS 'webUserWithRW'
AS
SELECT pbp.Tier1, pbp.LanguageId, pbp.NoteText, pbp.NoteTypeCode,
pbp.NoteGroup, pbp.SortOrder
FROM dbo.ProductBulletPoint pbp
WHERE Tier1 = @Tier1
AND LanguageId = @LanguageID
AND ( SeasonItemId = @SeasonItemID
OR
@SeasonItemID is null
)
AND pbp.NoteTypeCode IN (
SELECT NoteTypeCode=BulletPoint.NoteTypeCode.value('./text()[1]', 'varchar(50)')
FROM @ListNoteTypeCode.nodes('/BulletPoint/NoteTypeCode') AS BulletPoint ( NoteTypeCode )
)
SELECT @CacheDuration …Run Code Online (Sandbox Code Playgroud) performance sql-server-2005 xml sql-server optimization query-performance
这里有一个非常相似的问题:
但这不是我想要的。
我想完全取回我输入的内容。例如:
CREATE STATISTICS [_MM_STATS__745366020_7_1_4_5_2_3]
ON [dbo].[ProductShipTax]
([TaxRegionId], [ProductShipTaxID], [TaxRate], [ItemNo], [DateFrom], [DateTo])
Run Code Online (Sandbox Code Playgroud)
我想要一个查询,它可以让我获得上面的确切脚本,以便我可以将它应用到不同的数据库。
这可能吗?
object_definition和sp_helptext都返回存储过程的源代码 - 但是如何object_definition像sp_helptext当前那样使用和获取包含换行符的源代码?
例如在下面的代码中,我创建了一个存储过程:
if OBJECT_ID('usp_radhe') is not null
drop procedure usp_radhe
go
-- this procedure is just a test
-- it just returns a date in the past
-- how will I get its source code?
create procedure usp_radhe as
begin
select dateadd(dd,-31,GETDATE())
end
Run Code Online (Sandbox Code Playgroud)
使用sp_helptext我可以很好地查看源代码:
sp_helptext 'usp_radhe'
Run Code Online (Sandbox Code Playgroud)
使用object_definition我在一行中获得源代码,这对我不利:
select OBJECT_DEFINITION(object_id('usp_radhe'))
Run Code Online (Sandbox Code Playgroud)
sql-server ×9
metadata ×2
optimization ×2
performance ×2
automation ×1
connectivity ×1
exec ×1
fill-factor ×1
index ×1
index-tuning ×1
installation ×1
openrowset ×1
patching ×1
permissions ×1
powershell ×1
scripting ×1
statistics ×1
t-sql ×1
tempdb ×1
xml ×1