我想在一周或一个月内确定 SQL Server 2005 及更高版本服务器上的数据库的资源(CPU、内存和 IO)使用情况。有人可以帮忙吗?
Manjot's questions
在SQL Server 2008及以上版本中,如果对表进行分区,是否可以跨多个文件跨多个文件组?
谢谢
我们可以使用 WSUS 修补 Microsoft SQL 服务器吗?
不推荐吗?
在 SQL 2000、2005 和 2008 中,我如何知道上次在 MS SQL 服务器上收缩数据库的时间?
我想用 TSQL 来做这件事。
问候
曼约特
我们使用 powershell 检查我们的 SQL 服务器。该脚本遍历文本文件中的所有服务器,并在可以连接时将输出发送到文本文件。但是当它无法连接时,它会在 PS 窗口中显示错误并跳转到列表中的第二个服务器。问题是,当我们安排此脚本运行(无人值守)时,我们不会在文本文件中收到任何失败的报告。我真正想要它做的是....尝试连接到 SQL 服务器,如果可以,则将输出发送到文件,如果不能,则将“无法连接到服务器名称”之类的内容写入文件。以下是我用作示例的脚本
function checkSQLRestart([string] $Hostname )
{
$con="server=$Hostname;database=master;Integrated security=sspi"
$da=New-Object System.Data.SqlClient.SqlDataAdapter ("
declare @ServerRestartDate datetime
set @ServerRestartDate = (select crdate from master..sysdatabases where dbid=2)
if(@ServerRestartDate>GETDATE()-1)
print @@servername +' was restarted in last 24 hours. Restart date/time = '+cast(@ServerRestartDate as varchar(20))
",$con)
$dt=New-Object System.Data.DataTable
$da.fill($dt)|Out-Null
$svr
$dt|Format-table -AutoSize |Out-File $OutputFile -Append
}
我尝试使用类似的东西
if($da -eq -1)
{
write-host "failed to connect"
}
但它没有用。
请问有什么帮助吗?
有什么办法可以找出谁在 Windows 2003 服务器上安装了 SQL 服务器?
默认情况下,SQL 授予对存储到公共的执行权限,并选择 Master 中的某些表和视图到公共...我不是 100% 确定这一点...如果我们必须删除这些的选择权限,这意味着什么来自主上的公共对象?
谢谢...
使用 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
我正在尝试使用 SQL 跟踪在 SQL 2005 服务器上捕获所有语句/SP 和 RPC(它们完成或失败)。以下事件是否足够?
Exceptions
Stored Procedure
RPC:Completed
RPC:Starting
SP:Recompile
TSQL
SQL:StmtCompleted
SQL:StmtStarting
谢谢!
对于 SQL 2000 服务器,看到太多是不是很糟糕
exec sp_releaseschemalock 1
SQL 跟踪文件中的事件?
我正在调查 SQL 2005 服务器上存储过程的性能问题。这就是我打算这样做的方式:
- 分析任何不良 TSQL 实践的存储过程(如 count * 等)
- 通过 DTA 运行它
- 研究存储过程的估计查询计划
通过在数据库中运行此代码来查找缓存的计划:
SELECT deqp.dbid , deqp.objectid , deqp.encrypted , deqp.query_plan FROM sys.dm_exec_query_stats deqs CROSS APPLY sys.dm_exec_query_plan(deqs.plan_handle) AS deqp WHERE objectid = OBJECT_ID('procedurename', 'p') ;
- 查找相关索引(不确定如何)并检查使用情况
- 尝试找到任何缺失的索引
我还应该怎么做?非常感谢评论。
提前致谢
我正在编写一个 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
最终我想用参数在多个服务器上运行它-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"}
# $listofmetrics | Get-Counter
}
clear
foreach ($Hostname in Get-Content "D:\TEMP\machines.txt")
{
Write-Host $Hostname
checkTransactionsPerSecond($Hostname)
}
提前致谢
在我们 DMZ 中的 SQL Server 2005 实例上,我们安装了 BIDS,但没有安装 SSIS 服务。
如果我在该服务器上有一个 SSIS 包,我仍然可以安排在没有 SSIS 服务的情况下运行它吗?
我尝试使用 DTexec,但找不到包。
我想找出过去 24 小时内哪些 sql 代理作业失败...如何使用 TSQL for SQL 2000 找到它?
问候 Manjot
在SQL Server 2005上,如果所有数据库都处于Full模式(每小时事务日志备份),是否可以确定重建数据库的所有索引是否可以增长数据库的日志文件?它能增长多少?
如果没有直接的答案,那么任何指示将不胜感激。
提前致谢。
对于 SQL Server 2008 R2 分析服务,如何将 tempdb 数据库文件从一个驱动器移动到另一个驱动器?在安装时,我没有单独的 tempdb 驱动器。现在我确实有一个,我需要搬到新的驱动器。
在 SQL Server 2005 及更高版本中,如何找到创建索引的时间?
如果我想将模式所有权转移到另一个模式,我知道我需要使用类似的东西:
ALTER SCHEMA destinationschema TRANSFER sourceschema.objectname;
但它与以下内容有何不同:
ALTER AUTHORIZATION ON OBJECT::sourceschema.objectname TO destinationschema ;
提前致谢!
我是一名 DBA。我们已经将 SQL 2000 数据库 + DTS 包迁移到 SQL 2008。其中一个 DTS 包运行一个 ActiveX 脚本来打开一个 Excel 文件(当你打开它时它会运行宏)。ActiveX 脚本中的编码是:
Function Main()
Set XlApp = CreateObject("Excel.Application")
call XlApp.Workbooks.Open("\\server\c$\path.xls",3)
call XlApp.Workbooks.Open("\\server\c$\path2.xls",3)
call XlApp.Workbooks.Open("\\server\c$\path3.xls",3)
set XlApp = nothing
Main = DTSTaskExecResult_Success
End Function
有时它会抛出“Active X 组件遇到运行时错误”甚至没有告诉有关错误的详细信息,有时它运行良好。DTS 包使用 SQL 代理作业运行。在不使用 ActiveX 脚本的情况下,是否有更好、更可靠的方法来执行此操作?
谢谢!
我有一个安装了 Excel 的 SQL 2008 服务器 (SQL2008S1)。我不得不将数据库和 DTS 包从 SQL 2000 服务器 (SQL2000S2) 迁移到该服务器。1 DTS 包正在尝试访问远程服务器上的 Excel 文件,如 \\SQL2000S2\C$\directory\someExcelFile.xls。SQL2008S1 上的 SQL 服务器和代理都在同一个服务帐户 (Domain\SQL2008S1_service) 下运行,并且对 \\SQL2000S2\C$\目录具有完全权限。我什至授予 Domain\SQL2008S1$(机器名)对 \\SQL2000S2\C$\directory\ 的完全访问权限
当我在 SQL2008S1 上打开 DTS 包并手动执行它时,它运行得非常好。但是当我将其安排为工作时,工作报告:
以用户身份执行:Domain\SQL2008S1_service。...p_DTSExecutePackageTask_5 DTSRun OnError:DTSStep_DTSExecutePackageTask_5,错误 = -2147467259 (80004005) 错误字符串:DTSStep_DTSExecuteSQLTask_2:Microsoft Jet 数据库引擎无法打开文件 '\\SQL2000S2\C$\directory\someExcelFile.xls'。它已被其他用户独占打开,或者您需要权限才能查看其数据。
我 100% 确定文件未打开,并且我认为我已授予 SQL 代理/SQL 服务帐户足够的权限。
请问有什么帮助吗?