小编Man*_*jot的帖子

SQL 2005:我们能否确定重建索引维护作业可以使数据库日志文件增长多少?

在 SQL Server 2005 上,如果所有数据库都处于完整模式(每小时事务日志备份),是否可以确定重建数据库的所有索引是否可以增加数据库的日志文件?它可以增长多少?

如果没有直接的答案,那么任何方向都将不胜感激。

提前致谢。

index sql-server-2005 maintenance

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

powershell 获取 sql server 内存计数器并显示值

我正在编写一个 powershell 脚本来捕获以下 SQL 服务器计数器:

SQL Server:内存管理器:总服务器内存 (KB)

SQL Server:内存管理器:目标服务器内存 (KB)

我的机器有 3 个 SQL 服务器实例,因此我希望此脚本动态捕获所有计数器并仅报告 1 个样本的值。我尝试编写以下内容:

Get-counter -List *SQL*Memory* | Select paths, counter | format-list # doesn't display full list

Get-counter -List *SQL*Memory* | Select paths, counter | where {_.counter -like "*server memory*"} |format-list # displays nothing
Run Code Online (Sandbox Code Playgroud)

最终我想通过-computername参数在多个服务器上运行它,因此我希望它动态捕获。

任何人都可以帮我找到缺少的东西吗?以下是我正在运行的确切脚本:

Function checkTransactionsPerSecond([string] $Hostname )
{ 
    (Get-Counter -ListSet "*Databases").Counter | Where {$_ -like "*\Transactions/sec"} #this returns nothing
#   $listofmetrics = (Get-Counter -ListSet "*Databases").Counter | Where {$_ -like "*\Transactions/sec"} …
Run Code Online (Sandbox Code Playgroud)

sql-server powershell

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

TSQL:分别查找导致 SQL 编译和 SQL 重新编译过多的查询

我想找出导致我在性能监视器计数器中看到的高 SQL 编译(而不是重新编译)的原因。

这是我的看法:如果我看到很多 SQl 编译,那么这意味着我们系统上的查询没有被缓存,原因如下:

  • 许多即席查询

  • 运行 SQL 不缓存的查询,例如:

    UPDATE table1 SET col1='String 长度超过 8000 个字符.....' WHERE key_column = some int

  • 计划超时并从缓存中删除,因为: 缓存空间不足或计划使用时间不够长。

在探查器中捕获缓存插入的唯一方法是存储过程->SP:CacheInserts,但它只关注存储过程缓存。

所以我尝试了以下方法来获取临时查询:

SELECT [cp].[refcounts] -- when Refcounts becomes 0, plan is excluded from cache.
    , [cp].[usecounts] 
    , [cp].[objtype] 
    , st.[dbid] 
    , st.[objectid] 
    , st.[text] 
    , [qp].[query_plan] 
FROM sys.dm_exec_cached_plans cp     
CROSS APPLY sys.dm_exec_sql_text ( cp.plan_handle ) st     
CROSS APPLY sys.dm_exec_query_plan ( cp.plan_handle ) qp ;
Run Code Online (Sandbox Code Playgroud)

我认为导致编译的查询应该是 objtype= Adhoc 的查询,但这也可能与重新编译有关。现在我必须运行分析器,捕获导致重新编译的查询,然后将其从上面的列表中排除。

我是否朝着正确的方向前进?

是否可以使用单个查询来实现 SQL 编译而无需太多工作?

帮助我获得上述知识的资源:

http://social.msdn.microsoft.com/Forums/en/sqldatabaseengine/thread/954b4fba-3774-42e3-86e7-e5172abe0c83 http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=143946 http: …

performance sql-server-2005

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

非聚集索引列顺序

我有一个表的非聚集索引(称为NCIDX1col1, col2。我col3, col4, col5, col6按此顺序包含作为包含的列。

如果我运行以下查询:

select 
     col1,col2 
from 
     tbl1
where 
     col3 = something
and
     col4 = something
and
     col5 = something
Run Code Online (Sandbox Code Playgroud)

它与运行有什么不同:

select 
     col3,col2 ,col4
from 
     tbl1
where 
     col1 = something
and
     col5 = something
Run Code Online (Sandbox Code Playgroud)

?

我想说的是,当我们创建一个像上面那样的覆盖索引,并且我们改变我们访问数据的顺序时,它还会利用这个覆盖索引吗?

此外,相等列(在它们之间)和非相等列(在它们之间)的顺序......有关系吗?喜欢where equalitycol2='' and equalitycol1=''

sql-server-2008 sql-server nonclustered-index

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

谁安装了 SQL Server

有没有办法找出谁在 Windows 2003 服务器上安装了 SQL 服务器?

sql-server installation

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

SQL 2008:使用 DTS 包打开 excel 文件时出现代理作业错误

我有一个安装了 Excel 的 SQL 2008 服务器 (SQL2008S1)。我不得不将数据库和 DTS 包从 SQL 2000 服务器 (SQL2000S2) 迁移到该服务器。1 DTS 包试图访问远程服务器上的 Excel 文件,如 \\SQL2000S2\C$\directory\someExcelFile.xls。SQL2008S1 上的 SQL 服务器和代理都在同一服务帐户 (Domain\SQL2008S1_service) 下运行,并且对 \\SQL2000S2\C$\directory 具有完全权限。我什至授予 Domain\SQL2008S1$(机器名称)对 \\SQL2000S2\C$\directory\ 的完全访问权限

当我在 SQL2008S1 上打开 DTS 包并手动执行它时,它运行得非常好。但是当我将其安排为作业时,作业报告:

以用户身份执行:Domain\SQL2008S1_service。...p_DTSExecutePackageTask_5 DTSRun OnError: DTSStep_DTSExecutePackageTask_5, Error = -2147467259 (80004005) 错误字符串:DTSStep_DTSExecuteSQLTask_2:Microsoft Jet 数据库引擎无法打开文件 '\\SQL2000S2\C$\ExcelFile.xls\some. 它已被其他用户以独占方式打开,或者您需要获得查看其数据的权限。

我 100% 确定文件未打开,并且我认为我已授予 SQL 代理/SQL 服务帐户足够的权限。

请问有什么帮助吗?

sql-server-2008 etl

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

SQL Server:索引创建日期

在 SQL Server 2005 及更高版本中,如何找到创建索引的时间?

index sql-server-2005

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

SQL:传输数据库架构

如果我想将架构所有权转移到另一个架构,我知道我需要使用以下内容:

ALTER SCHEMA destinationschema TRANSFER sourceschema.objectname;
Run Code Online (Sandbox Code Playgroud)

但它与以下有何不同:

ALTER AUTHORIZATION ON OBJECT::sourceschema.objectname TO destinationschema ;
Run Code Online (Sandbox Code Playgroud)

提前致谢!

schema sql-server-2008 security

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

SQL 2000 - tsql 找出过去 24 小时内失败的作业

我想找出过去 24 小时内哪些 sql 代理作业失败了...如何使用 TSQL for SQL 2000 找到它?

问候 曼乔特

sql-server-2000

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

TSQL 查找服务器是在动态端口还是静态端口上侦听

使用 TSQL,如何确定 MS SQL 服务器(任何版本)是配置为使用静态端口还是使用动态端口?

我正在尝试使用的脚本:

DECLARE @TcpPort VARCHAR(5)
        ,@RegKey VARCHAR(100)

IF @@SERVICENAME !='MSSQLSERVER'
    BEGIN
        SET @RegKey = 'SOFTWARE\Microsoft\Microsoft SQL Server\' + @@SERVICENAME + '\MSSQLServer\SuperSocketNetLib\Tcp\IPAll'
    END
    ELSE
    BEGIN
        SET @RegKey = 'SOFTWARE\MICROSOFT\MSSQLSERVER\MSSQLSERVER\SUPERSOCKETNETLIB\TCP\IPAll'
    END

EXEC master..xp_regread
    @rootkey = 'HKEY_LOCAL_MACHINE'
    ,@key = @RegKey
    ,@value_name = 'TcpPort'
    ,@value = @TcpPort OUTPUT

EXEC master..xp_regread
    @rootkey = 'HKEY_LOCAL_MACHINE'
    ,@key = @RegKey
    ,@value_name = 'TcpDynamicPorts'
    ,@value = @TcpPort OUTPUT

SELECT @TcpPort AS PortNumber
        ,@@SERVERNAME AS ServerName
        ,@@SERVICENAME AS ServiceName
Run Code Online (Sandbox Code Playgroud)

sql-server dynamic-ports

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

SQL 2008 Server 代理看不到性能计数器

我正在尝试创建一个新的 SQL Server 代理警报来捕获“SQLServer:General Statistics|Processes Blocked||>|5”,但看起来警报创建 GUI 无法看到任何性能计数器,如下图所示: 在此处输入图片说明

对象、计数器和实例的下拉菜单为空。我什至无法使用 TSQL 创建警报,如下所示: 在此处输入图片说明 我可以看到这些计数器在 perfmon 中收集数据。

有任何想法吗?提前致谢...

sql-server-2008 perfmon

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

在未安装 SSIS 服务的情况下运行 SSIS 包

在 DMZ 中的 SQL Server 2005 实例上,我们安装了 BIDS,但没有安装 SSIS 服务。

如果我在该服务器上有一个 SSIS 包,我是否仍然可以安排在没有 SSIS 服务的情况下运行它?

我尝试使用 DTexec 但它无法找到该包。

sql-server-2005 sql-server ssis

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