在 SQL Server 2005 上,如果所有数据库都处于完整模式(每小时事务日志备份),是否可以确定重建数据库的所有索引是否可以增加数据库的日志文件?它可以增长多少?
如果没有直接的答案,那么任何方向都将不胜感激。
提前致谢。
我正在编写一个 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 编译(而不是重新编译)的原因。
这是我的看法:如果我看到很多 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: …
我有一个表的非聚集索引(称为NCIDX1)col1, 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=''。
有没有办法找出谁在 Windows 2003 服务器上安装了 SQL 服务器?
我有一个安装了 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 服务帐户足够的权限。
请问有什么帮助吗?
如果我想将架构所有权转移到另一个架构,我知道我需要使用以下内容:
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)
提前致谢!
我想找出过去 24 小时内哪些 sql 代理作业失败了...如何使用 TSQL for SQL 2000 找到它?
问候 曼乔特
使用 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 代理警报来捕获“SQLServer:General Statistics|Processes Blocked||>|5”,但看起来警报创建 GUI 无法看到任何性能计数器,如下图所示:

对象、计数器和实例的下拉菜单为空。我什至无法使用 TSQL 创建警报,如下所示:
我可以看到这些计数器在 perfmon 中收集数据。
有任何想法吗?提前致谢...
在 DMZ 中的 SQL Server 2005 实例上,我们安装了 BIDS,但没有安装 SSIS 服务。
如果我在该服务器上有一个 SSIS 包,我是否仍然可以安排在没有 SSIS 服务的情况下运行它?
我尝试使用 DTexec 但它无法找到该包。
sql-server ×5
index ×2
etl ×1
installation ×1
maintenance ×1
perfmon ×1
performance ×1
powershell ×1
schema ×1
security ×1
ssis ×1