Desejo identificar o uso de recursos (CPU, memória e IO) por um banco de dados em um servidor SQL Server 2005 e superior, durante uma semana ou um mês. Alguém por favor pode ajudar nisso?
Manjot's questions
No SQL Server 2008 e superior, se uma tabela for particionada, ela pode abranger vários arquivos em vários grupos de arquivos?
Obrigado
Podemos corrigir o servidor Microsoft SQL usando o WSUS?
Não é recomendado?
No SQL 2000, 2005 e 2008, como posso saber quando os bancos de dados foram reduzidos pela última vez em um servidor MS SQL?
Eu quero fazer isso usando TSQL.
Cumprimentos
Manjot
Verificamos nossos servidores SQL usando powershell. O script passa por todos os servidores em um arquivo de texto e envia a saída para um arquivo de texto quando pode se conectar. Mas quando não consegue se conectar, ele exibe um erro na janela do PS e pula para o segundo servidor na lista. O problema com isso é que, quando agendamos esse script para execução (autônoma), não recebemos um relatório de nenhuma falha no arquivo de texto. O que eu realmente quero fazer é .... tente conectar-se a um servidor SQL, se puder, envie a saída para o arquivo e, se não puder, escreva algo como "Falha ao conectar ao nome do servidor" no arquivo. A seguir está o script que estou usando como exemplo
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
}
Eu tentei usar coisas como
if($da -eq -1)
{
write-host "failed to connect"
}
Mas não funcionou.
Alguma ajuda por favor?
Existe alguma maneira de descobrir quem instalou o SQL Server em um servidor Windows 2003?
Por padrão, o SQL concede permissão de execução em armazenado para público e também seleciona algumas tabelas e exibições no Master para público... Não tenho 100% de certeza sobre isso... Qual é a implicação se tivermos que remover os privilégios de seleção nesses objetos do Public on Master?
Obrigado...
Usando TSQL, como posso descobrir se o servidor MS SQL (qualquer versão) está configurado para usar porta estática ou está usando porta dinâmica?
Script que estou tentando usar:
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
Estou tentando capturar todas as instruções/SPs e RPCs (concluem ou falham) em um servidor SQL 2005 usando rastreamento SQL. Os seguintes eventos são suficientes?
Exceptions
Stored Procedure
RPC:Completed
RPC:Starting
SP:Recompile
TSQL
SQL:StmtCompleted
SQL:StmtStarting
obrigado!
Para um servidor SQL 2000, é ruim ver muitos
exec sp_releaseschemalock 1
eventos em um arquivo de rastreamento SQL?
Estou investigando problemas de desempenho para um procedimento armazenado no servidor SQL 2005. É assim que pretendo fazer:
- Analise o procedimento armazenado para quaisquer práticas ruins de TSQL (como contagem * etc)
- Execute-o através do DTA
- Estude o plano de consulta estimado do procedimento armazenado
Encontre o plano em cache executando este código no banco de dados:
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') ;
- Encontre os índices relacionados (não sei como) e verifique o uso
- Tente encontrar quaisquer índices ausentes
De que outra forma devo fazer isso? Comentários são realmente apreciados.
desde já, obrigado
Estou escrevendo um script powershell para capturar os seguintes contadores do servidor SQL:
SQL Server: Gerenciador de memória: Memória total do servidor (KB)
SQL Server: Gerenciador de memória: Memória do servidor de destino (KB)
Minha máquina tem 3 instâncias de servidores SQL, então quero que este script capture todos os contadores dinamicamente e informe o valor para apenas 1 amostra. tentei escrever o seguinte:
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
eventualmente, quero executar isso em vários servidores com -computername
parâmetro e, portanto, quero capturar dinamicamente.
Alguém pode me ajudar a encontrar o que está faltando? A seguir está o script exato que estou executando:
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)
}
desde já, obrigado
Em uma instância do SQL Server 2005 em nossa DMZ, temos o BIDS instalado, mas não o serviço SSIS.
Se eu tiver um pacote SSIS nesse servidor, ainda posso agendar para executá-lo sem o serviço SSIS?
Eu tentei usar o DTexec, mas não é capaz de encontrar o pacote.
Quero descobrir quais tarefas do agente sql falharam nas últimas 24 horas... Como posso localizá-lo usando o TSQL para SQL 2000?
Cumprimentos Manjot
No SQL Server 2005, se todos os bancos de dados estiverem no modo Completo (com backups de log de transação por hora), é possível determinar se a reconstrução de todos os índices de um banco de dados pode aumentar o arquivo de log de um banco de dados? E quanto pode crescer?
Se não houver uma resposta direta, qualquer orientação será muito apreciada.
Desde já, obrigado.
Para SQL Server 2008 R2 Analysis Services, como posso mover arquivos de banco de dados tempdb de uma unidade para outra? No momento da instalação, eu não tinha uma unidade separada para tempdb. Agora que tenho um, preciso mudar para a nova unidade.
No SQL Server 2005 e superior, como posso saber quando um índice foi criado?
Se eu quiser transferir a propriedade do esquema para outro esquema, sei que preciso usar algo como:
ALTER SCHEMA destinationschema TRANSFER sourceschema.objectname;
Mas como é diferente de:
ALTER AUTHORIZATION ON OBJECT::sourceschema.objectname TO destinationschema ;
Desde já, obrigado!
Eu sou um DBA. Migramos bancos de dados SQL 2000 + pacotes DTS para SQL 2008. Um dos pacotes DTS executa um script ActiveX para abrir um arquivo Excel (que executa macros quando você o abre). A codificação dentro do script 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
Às vezes, ele lança "O componente Active X apresentou um erro de tempo de execução" sem nem mesmo informar os detalhes sobre o erro e, às vezes, funciona bem. O pacote DTS é executado usando um trabalho de agente SQL. Existe uma maneira melhor e confiável de fazer isso sem usar o script ActiveX?
Obrigado!
Eu tenho um servidor SQL 2008 (SQL2008S1) com o Excel instalado nele. Tive que migrar bancos de dados e pacotes DTS de um servidor SQL 2000 (SQL2000S2) para este servidor. 1 O pacote DTS está tentando acessar um arquivo do Excel em um servidor remoto como \\SQL2000S2\C$\directory\someExcelFile.xls. O servidor SQL e o agente no SQL2008S1 estão sendo executados na mesma conta de serviço (Domain\SQL2008S1_service) e têm permissões totais no diretório \\SQL2000S2\C$\. Eu até concedi acesso total a Domain\SQL2008S1$ (nome da máquina) a \\SQL2000S2\C$\directory\
Quando abro o pacote DTS no SQL2008S1 e o executo manualmente, ele funciona perfeitamente. Mas quando agendo como trabalho, o trabalho relata:
Executado como usuário: Domain\SQL2008S1_service. ...p_DTSExecutePackageTask_5 DTSRun OnError: DTSStep_DTSExecutePackageTask_5, Erro = -2147467259 (80004005) Cadeia de caracteres do erro: DTSStep_DTSExecuteSQLTask_2: O mecanismo de banco de dados Microsoft Jet não pode abrir o arquivo '\\SQL2000S2\C$\directory\someExcelFile.xls'. Já foi aberto exclusivamente por outro usuário ou você precisa de permissão para visualizar seus dados.
Tenho 100% de certeza de que os arquivos não estão abertos e pensei ter concedido direitos suficientes à conta do agente SQL/SQL.
Alguma ajuda por favor?