AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-9031

Yaroslav's questions

Martin Hope
Yaroslav
Asked: 2024-05-29 23:15:17 +0800 CST

Não é possível criar um gatilho de logon na instância do servidor SQL AWS RDS

  • 5

Para auditar logins que usei antes de um gatilho no nível do servidor capturar o LOGON e salvá-lo em uma tabela, existem inúmeros exemplos para fazer isso.

Mas tentar fazer o mesmo na instância sqlserver do AWS RDS falha com o erro Cannot create the trigger 'LogLogons', because you don't have permission. . Tenho permissão total de administrador de sistema. Eu li e verifiquei outras perguntas e sites, há referências ao parâmetro mysql e log_bin_trust_function_creators que precisa ser habilitado e algumas outras coisas ( Posso CREATE TRIGGER em um banco de dados rds? ), mas para o MS SQL Server não consigo encontrar uma confirmação se os gatilhos no nível do servidor podem ser criados ou não.

Encontrei isso , mas não está claro se os gatilhos de logon podem ser criados ou não.

CREATE TRIGGER LogLogons ON ALL SERVER WITH EXECUTE AS 'authorized_login' FOR LOGON AS
INSERT DBA.dbo.loginaudit
DEFAULT VALUES;
--DROP TRIGGER LogLogons ON ALL SERVER;
sql-server
  • 1 respostas
  • 26 Views
Martin Hope
Yaroslav
Asked: 2018-08-07 02:49:43 +0800 CST

Gere automaticamente script de criação de banco de dados com valores padrão para SIZE e FILEGROWTH

  • 0

Usando uma mistura de vários scripts PoSH consegui obter um script funcional que gera, copia e executa remotamente um script para criar a estrutura básica de um determinado banco de dados com todos os seus objetos , logins , etc. valores indicados no ambiente de produção (digamos 1 GB e 512 MB). O objetivo é criar o banco de dados em um ambiente de desenvolvimento para os desenvolvedores brincarem com ele. Portanto, um tamanho padrão inicial e um crescimento de arquivo serão mais que suficientes. Para SQL2016, esses valores são 8 MB e 64 MB, respectivamente, conforme declarado aqui pelo MSSQL Tiger Team .

Existe uma maneira de gerar o script com esses valores em vez dos configurados para o banco de dados? Ou devo pesquisar e substituir os valores no script?

sql-server sql-server-2014
  • 2 respostas
  • 404 Views
Martin Hope
Yaroslav
Asked: 2018-05-25 02:48:19 +0800 CST

N'Șc' considerada chave duplicada de N'C' usando o agrupamento Latin1_General_CI_AS

  • 11

Eu tenho uma tabela com uma chave exclusiva que inclui uma NVARCHAR(50)coluna (correta ou não, mas existe). Então, ao tentar inserir Școu C(não importa a ordem da inserção) ele quebra na 2ª inserção devido a problemas de agrupamento. Aqui está o erro:

(1 linha(s) afetada) Msg 2601, Level 14, State 1, Line 16 Não é possível inserir linha de chave duplicada no objeto 'dbo.testT' com índice exclusivo 'IX_TestT'. O valor da chave duplicada é (C).

Selecione retornos:

insira a descrição da imagem aqui

O agrupamento padrão do banco de dados é Latin1_General_CI_AS. Passei algum tempo procurando como resolver, sem alterar muito a estrutura já existente, mas não consigo encontrar uma maneira de começar a funcionar. Tentei diferentes agrupamentos e combinações, tudo falha. Leia ( aqui e aqui ) sobre expansões de personagens e assim por diante, ainda travado. Aqui está um código de exemplo que estou usando para replicar o problema, sinta-se à vontade para modificar e recomendar qualquer coisa que possa ajudar a resolver isso.

CREATE TABLE testT (
    [Default_Collation]     [NVARCHAR] (50) COLLATE DATABASE_DEFAULT,
    [Latin1_General_CI_AS]  [NVARCHAR] (50) COLLATE Latin1_General_CI_AS,
    [Latin1_General_CI_AI]  [NVARCHAR] (50) COLLATE Latin1_General_CI_AI,
    [SQL_Collation]         [NVARCHAR] (50) COLLATE SQL_Latin1_General_CP1_CI_AS);
CREATE UNIQUE CLUSTERED INDEX [IX_TestT] ON [dbo].[testT] ([Default_Collation])
ON [PRIMARY]
GO

INSERT INTO testT
SELECT  N'Șc',  --COLLATE Latin1_General_CI_AS
        N'Șc',  --COLLATE Latin1_General_CI_AS
        N'Șc',  --COLLATE Latin1_General_CI_AS
        N'Șc'   --COLLATE Latin1_General_CI_AS

INSERT INTO testT
SELECT  N'C'    --COLLATE Latin1_General_CI_AS 
        ,N'C'   --COLLATE Latin1_General_CI_AS
        ,N'C'   --COLLATE Latin1_General_CI_AS
        ,N'C'   --COLLATE SQL_Latin1_General_CP1_CI_AS

SELECT * FROM testT;

DROP TABLE testT;
sql-server t-sql
  • 1 respostas
  • 336 Views
Martin Hope
Yaroslav
Asked: 2017-12-14 01:34:19 +0800 CST

Problema ao ler dados do secundário ao reorganizar o índice clusterizado

  • 7

Temos um AOAG no SQL Server 2014 SP2 CU5 (3 nós). Há um banco de dados com nível de isolamento de instantâneo de leitura confirmada LIGADO . Temos uma grande mesa compactada. Algumas de nossas consultas maiores nesta tabela são executadas no secundário.

Em seguida, há um trabalho noturno no nó primário para reorganizar os índices em várias tabelas. Ao atingir o índice clusterizado da tabela mencionada, obtemos o seguinte erro:

Transação abortada ao acessar a linha versionada na tabela 'xxxx' no banco de dados 'yyyy'. A linha com versão solicitada não foi encontrada porque o acesso secundário legível não é permitido para a operação que tentou criar a versão.

Em algum momento, as grandes consultas estavam realizando as leituras com a dica READUNCOMMITTED. Eu pensei que era a causa desse erro, então eu os removi. Mas o erro ainda está lá.

Alguma ideia?

Configuração atual:

  • 02 secundário está em modo síncrono
  • 03 secundário em modo assíncrono

Configuração atual AOAG

Detalhes da tabela

  • Contagens de linhas: 122.567.668
  • Espaço total MB: 18.460
  • Espaço usado MB: 18.238

Definições:

CREATE TABLE [dbo].[big_table](
[ID] [int] NOT NULL IDENTITY(1, 1),
1 [int] NULL,
2 [datetime] NULL,
3 [int] NULL,
4 [int] NULL CONSTRAINT [DF_ccc_bUnits] DEFAULT ((0)),
5 [money] NULL,
6 [money] NULL,
7 [int] NULL,
8 [int] NULL CONSTRAINT [DF_ccc_MinDays] DEFAULT ((0)),
9 [int] NULL,
10 [int] NULL,
11 [float] NULL,
12 [money] NULL,
13 [int] NULL,
14 [int] NULL,
15 [nvarchar] (200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
16 [money] NULL,
17 [money] NULL,
18 [int] NULL,
19 [int] NULL,
20 [money] NULL,
21 [money] NULL,
22 [money] NULL,
23 [money] NULL,
24 [money] NULL,
25 [datetime] NOT NULL CONSTRAINT [DFcccadded] DEFAULT (getdate()),
26 [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
27 [money] NOT NULL CONSTRAINT [DFcccBrf] DEFAULT ((0)),
29 [money] NOT NULL CONSTRAINT [DFcccHB] DEFAULT ((0)),
30 [money] NOT NULL CONSTRAINT [DFcccFB] DEFAULT ((0)),
31 [money] NOT NULL CONSTRAINT [DFcccAllBoards] DEFAULT ((0)),
32 [money] NOT NULL CONSTRAINT [DFcccChildBrf] DEFAULT ((0)),
33 [money] NOT NULL CONSTRAINT [DFcccChildHB] DEFAULT ((0)),
34 [money] NOT NULL CONSTRAINT [DFcccChildFB] DEFAULT ((0)),
35 [money] NOT NULL CONSTRAINT [DFcccChildAllBoards] DEFAULT ((0)),
36 [int] NULL CONSTRAINT [DFcccShow_1] DEFAULT ((0)),
37 [timestamp] NOT NULL,
38 [money] NULL,
39 [money] NULL,
40 [money] NULL,
41 [money] NULL,
42 [money] NULL,
43 [money] NULL,
44 [money] NULL,
45 [money] NULL,
46 [int] NOT NULL CONSTRAINT [DFcccReleaseHour] DEFAULT ((0)),
47 [int] NULL,
48 [int] NULL,
49 [money] NULL,
50 [money] NULL,
51 [float] NULL
) ON [PRIMARY]
WITH (DATA_COMPRESSION = PAGE)
GO
CREATE UNIQUE CLUSTERED INDEX [IXccc] ON [dbo].[big_table] (1, 2) WITH (FILLFACTOR=90, DATA_COMPRESSION = PAGE) ON [PRIMARY]
GO
ALTER TABLE [dbo].[big_table] ADD CONSTRAINT [PKccc] PRIMARY KEY NONCLUSTERED ([ID]) WITH (DATA_COMPRESSION = PAGE) ON [secondary]
GO
CREATE UNIQUE NONCLUSTERED INDEX [IXcccstamp] ON [dbo].[big_table] (36) INCLUDE (1, 2) WITH (FILLFACTOR=100) ON [PRIMARY]
GO
sql-server sql-server-2014
  • 1 respostas
  • 2472 Views
Martin Hope
Yaroslav
Asked: 2017-08-09 04:37:54 +0800 CST

Use o tema escuro na grade de resultados do SSMS, no Pesquisador de objetos e em outras janelas

  • 13

Existem várias maneiras de usar um tema escuro na janela de codificação principal do SSMS, importando um arquivo vsettings, aplicando o tema escuro que está desabilitado em um arquivo de configuração ou fazendo isso manualmente. Mas todas essas opções não afetam os Resultados da Grade, Pesquisador de Objetos e outras janelas. Esses 2 são os principais que eu uso além do de codificação.

Eu tentei o usual Tools>Options>Environment>Fonts and Colors , em seguida, selecionei na caixa de combinação Show settings para: a opção Grid Results e usando White para Item Foreground e Black para Item Background . SSMS salvo e reiniciado, mas apenas o texto é branco, o plano de fundo ainda é branco.

Alguma ideia do que está acontecendo ou como fazer? Não consigo encontrar como fazer isso para o Pesquisador de Objetos.

Configuração de fontes e cores do SSMS

configuration ssms
  • 3 respostas
  • 28524 Views
Martin Hope
Yaroslav
Asked: 2017-02-03 03:28:32 +0800 CST

SSRS: Bug usando SSL (https://)

  • 2

Já temos um SSRS 2014 em produção e queremos agora usar um site seguro vinculando-o a um certificado (URL como "https://..."). Portanto, agora a URL é um nome de domínio totalmente qualificado (FQDN).

Podemos acessar corretamente o gerenciador de relatórios com esta URL https. Temos que nos registrar para acessar com a conta do Windows.

O bug que temos é que quando navegamos, às vezes, passamos para uma página http. Cada vez que passamos de uma página https para uma página http, o navegador (IE) pede para se registrar novamente.

Por exemplo, aqui estamos em uma página https. Quando clico com o botão direito em um relatório -> gerenciar: insira a descrição da imagem aqui

Chego nesta página: insira a descrição da imagem aqui

Se eu clicar em uma guia no painel esquerdo (por exemplo, em Segurança), o SSRS me pedirá para reconectar e pular para uma página http. Este é um problema real para nós.

Alguma sugestão?

sql-server sql-server-2014
  • 1 respostas
  • 2852 Views
Martin Hope
Yaroslav
Asked: 2016-07-27 15:04:43 +0800 CST

diferenças entre SPID e session_id

  • 3

Estou configurando um trabalho para obter o SPID de um processo ofensivo e eliminá-lo. Estou usando uma mistura entre o ótimo sp_Whoiscative de @AdamMachanic e juntando-se a sysprocesses no nome de login e valores SPID e session_id , pois esses devem ser os mesmos (ou estou errado e esse é o meu erro?).

Estou obtendo algo que não entendo: para um mesmo SPID de sysprocesses, estou obtendo diferentes valores de session_id de resultados whoisactive. O que está incorreto aqui?

Aqui está o código que estou usando. O filtro para obter valores 10s antes da data e hora atual é porque o whoisactive está executando com o parâmetro @deltainterval que leva cerca de 10s para ser executado a cada execução.

USE master;

--  Log information about current running processes to table Log_WhoIsActive
    EXEC [master].[dbo].[sp_WhoIsActive]
        @get_full_inner_text = 1,
        @get_plans = 2,
        @get_outer_command = 1,
        @get_transaction_info = 1,
        @get_task_info = 2,
        @get_locks = 1,
        @get_avg_time = 1,
        @get_additional_info = 1,
        @delta_interval = 2,
        @sort_order = '[start_time] DESC',
        @destination_table = 'Log_WhoIsActive_tests';

--compare date from sysprocesses with data gathered on sp_whosiactive
SELECT  dt.collection_time, sp.spid, dt.[dd hh:mm:ss.mss], sp.loginame,
        dt.login_name, dt.session_id
FROM    sys.sysprocesses sp JOIN Log_WhoIsActive_tests dt
            ON sp.loginame = dt.login_name
WHERE   sp.loginame = 'my_login_name'
        AND sp.status = 'runnable'
        AND sp.spid > 50
        AND dt.collection_time > DATEADD(ss, -10, GETDATE());

Session_id diferente para o mesmo SPID

sql-server t-sql
  • 1 respostas
  • 9800 Views
Martin Hope
Yaroslav
Asked: 2015-11-06 12:05:07 +0800 CST

Acione ações na criação ou anexação do banco de dados

  • 5

Em nosso ambiente de desenvolvimento, precisamos executar várias ações quando alguns bancos de dados são criados ou anexados. Ações como limpar algumas tabelas, propagar novamente algumas outras, alterar e-mails, etc. Eu estava tentando usar gatilhos DDL e realmente encontrei aqui uma pergunta semelhante à minha. A partir desse código, estou tentando uma ação ligeiramente diferente, mas não consigo nem começar.

O código a seguir, retirado da pergunta que mencionei, acabei de adicionar uma condição para verificar o nome do banco de dados e, se corresponder ao que preciso, faça alguma ação. O problema é que não há execução da instrução SET dentro do IF BEGIN..END. O último SELECT usando fn_listextendedpropertynão retorna nenhum dado.

IF EXISTS (SELECT NULL FROM sys.server_triggers WHERE name = 'ddl_trig_database')
BEGIN
    DROP TRIGGER ddl_trig_database
    ON ALL SERVER;
END
GO

CREATE TRIGGER ddl_trig_database 
ON ALL SERVER 
FOR CREATE_DATABASE 
AS 
    DECLARE 
        @DatabaseName NVARCHAR(128)
        , @CreatedBy NVARCHAR(128)
        , @CreatedDate NVARCHAR(23)
        , @SQL NVARCHAR(4000);

    SELECT  @DatabaseName = EVENTDATA().value('(/EVENT_INSTANCE/DatabaseName)[1]','NVARCHAR(128)');

    IF @DatabaseName = N'asd'
    BEGIN
        SET @SQL = '
            USE ' + @DatabaseName + ';
            EXEC sys.sp_addextendedproperty @name = N''Owner'', @value = N''' + @CreatedBy + ''';
            EXEC sys.sp_addextendedproperty @name = N''StartDate'', @value = N''' + @CreatedDate + ''';';
        EXEC (@SQL);
    END;
GO

CREATE DATABASE asd;
GO

SELECT name, value 
FROM asd.sys.fn_listextendedproperty(default, default, default, default, default, default, default)

DROP TRIGGER ddl_trig_database
ON ALL SERVER;
GO

DROP DATABASE asd;
GO
sql-server trigger
  • 1 respostas
  • 4538 Views
Martin Hope
Yaroslav
Asked: 2015-05-20 05:44:56 +0800 CST

backup para NAS usando sqlcmd

  • 2

Eu tenho procurado por possíveis duplicatas antes de perguntar, mas não consigo encontrar nada. O mais próximo foi o Backup SQL Server To Nas , mas não é exatamente o meu caso.

Temos um novo Synology NAS configurado, devido a algumas necessidades de segurança está configurado para usar um usuário dedicado e pwd não incluído no diretório ativo ou similar. Já testei e está ok, pode logar, ver os arquivos e todos os direitos estão ok.

Por outro lado, temos backups em execução usando scripts úteis de Ola Hallengren, executando slqcmd.

Pergunta: como posso fornecer credenciais de usuário/pwd para acessar o NAS? Tentei usar -U -P, mas obtive o seguinte erro. Em seguida, tentei com -S, mas também com erro. O que estou fazendo de errado aqui? Acho que deve ser algo bobo, seja o que for que estou perdendo, mas não consigo encontrá-lo.

Sqlcmd: The -E and the -U/-P options are mutually exclusive. Process Exit Code 1. The step failed.

sql-server backup
  • 1 respostas
  • 606 Views
Martin Hope
Yaroslav
Asked: 2014-09-05 06:54:14 +0800 CST

Monitorar SQLAgent

  • 4

Detectei que o SQLAgent não estava sendo executado em um de nossos servidores devido a um erro inesperado de vazamento de memória que causou o desligamento do SQL Agent. Não havia alertas configurados, portanto, um trabalho principal que deveria estar em execução não estava. Existe uma maneira de monitorar o SQL Agent do próprio SQL Server?

Eu fiz muitas pesquisas, mas não consigo encontrar uma maneira de fazer isso. Tudo o que encontrei muito sobre monitoramento de jobs, agendamentos, etc. Mas não como monitorar se o SQL Agent para de funcionar, não reinicia ou algo semelhante que impeça sua execução.

PS: Estou planejando fazer outra pergunta para o problema de vazamento de memória

sql-server-2008-r2 monitoring
  • 3 respostas
  • 383 Views
Martin Hope
Yaroslav
Asked: 2014-09-03 05:31:49 +0800 CST

Menor desempenho em servidores mais novos

  • 8

Temos vários servidores db em produção, 4 deles com configuração de hardware muito semelhante. Dell PowerEdge R620, a única diferença é que os 2 mais novos (comprados e configurados há 3 meses) têm controlador RAID v710, 256 GB de RAM e CPU são 2 Xeon E5-2680 físicos de 2,80 GHz. Os antigos (comprados e configurados há cerca de 1 ano) têm controlador RAID v700, 128 GB de RAM e funcionam com 2 Xeon E5-2690 físicos de 2,90 GHz. O BIOS está atualizado, todos os drivers atualizados para as últimas versões, etc. Todos executando o SQL Server 2008R2 Enterprise (SP1) atualizado para a última CU e Windows 2012R2 Standard. Ambos rodando em 200 GB SSD x5 RAID10. Existe apenas um banco de dados em execução em cada um deles, sincronizado por meio de um trabalho que chama um pacote SSIS. Nosso administrador de sistema executou muitos testes de desempenho e estresse para garantir que não haja nenhuma configuração ou falha de hardware ou rede. Como esperado, os mais novos apresentam melhores resultados de desempenho. Até agora tudo bem.

O problema que temos pode ser visto na captura de tela do Kibana. Amarelo e laranja são os 2 servidores mais novos (6,7 nas tabelas) e abaixo de todos os outros servidores. É perfeitamente visível que esses 2 novos servidores têm um tempo de resposta mais lento. E não só isso, mas também esses 2 servidores têm um pouco menos de carga do que os 2 mais antigos (linhas azuis claras e escuras - 4,5 nas tabelas).

insira a descrição da imagem aqui Tenha alguns scripts de monitoramento coletando informações sobre contadores de desempenho. Pesquisei o máximo possível com DMV's e terceiras ferramentas de monitoramento, tenho muitas informações em mãos. Mas deve haver (ofc) algo que estou perdendo aqui, pois não consigo encontrar uma resposta para esse tempo de resposta mais lento.

Os 2 servidores mais novos estão usando menos RAM, mas acho que isso é esperado, quando comparado aos outros mais antigos, pois eles têm uma carga menor.

| Server Name| Mem_MB |    Mem_GB    | Server_RAM_GB | SQL_max_mem_GB| SQL_min_mem_GB |
|------------|--------|--------------|---------------|---------------|----------------|
|      4     |  41108 | 40.145263671 |     128       |      120      |      16        |
|      5     |  61272 | 59.836425781 |     128       |      120      |      16        |
|      6     |  34117 | 33.317626953 |     256       |      250      |      16        |
|      7     |  33764 | 32.972656250 |     256       |      250      |      16        |

A configuração de mais RAM para todos os servidores é a seguinte:

| Server Name | Total_Page_File_In_MB | Available_Page_File_MB | Kernel_Paged_Pool_MB | Kernel_Nonpaged_Pool_MB |
|-------------|-----------------------|------------------------|----------------------|-------------------------|
| 4           | 180160                | 130042                 | 249                  | 98                      |
| 5           | 148416                | 77246                  | 249                  | 110                     |
| 6           | 301010                | 260453                 | 132                  | 99                      |
| 7           | 301010                | 260454                 | 143                  | 108                     |

A execução da seguinte consulta em todos os servidores mostra parâmetros de configuração idênticos:

SELECT * FROM master.sys.configurations

Eu poderia continuar mostrando muito mais informações, mas não tenho certeza do que poderia ser necessário. Alguma pista sobre o que devo verificar?

Eu li um white paper conhecido do MS Troubleshooting Performance Problems in SQL Server 2008 e tirei muitas dúvidas do DMV de lá.

EDITAR A pedido:

EXEC sp_configure 'max server memory (MB)'

| Server Name | name                   | minimum | maximum    | config_value | run_value |
|-------------|------------------------|---------|------------|--------------|-----------|
| 4           | max server memory (MB) | 16      | 2147483647 | 120000       | 120000    |
| 5           | max server memory (MB) | 16      | 2147483647 | 120000       | 120000    |
| 6           | max server memory (MB) | 16      | 2147483647 | 250000       | 250000    |
| 7           | max server memory (MB) | 16      | 2147483647 | 250000       | 250000    |

Já maxdopjogamos com ele e os resultados são:

 EXEC sp_configure 'max degree of parallelism'

| Server Name |            name           | minimum | maximum | config_value | run_value |
|:-----------:|:-------------------------:|:-------:|:-------:|:------------:|:---------:|
|      4      | max degree of parallelism |    0    |   1024  |       1      |     1     |
|      5      | max degree of parallelism |    0    |   1024  |       1      |     1     |
|      6      | max degree of parallelism |    0    |   1024  |       1      |     1     |
|      7      | max degree of parallelism |    0    |   1024  |       1      |     1     |
sql-server-2008-r2 configuration
  • 1 respostas
  • 236 Views
Martin Hope
Yaroslav
Asked: 2014-07-25 02:22:29 +0800 CST

É obrigatório criar uma rota ao criar uma notificação de evento?

  • 1

Estou começando com o corretor de serviços. Já consegui configurar uma notificação de evento para processos bloqueados com base nesta resposta e está funcionando perfeitamente. Então eu queria configurar outro para notificar sobre impasses e vejo uma CREATE ROUTEdeclaração:

-- create the route for the service
CREATE ROUTE DeadLockNotificationsRoute
    WITH SERVICE_NAME = 'DeadLockNotificationsService',
    ADDRESS = 'LOCAL';
GO

Mas no anterior eu não executei esta etapa, não foi incluída e funciona. Olhando em vários lugares aqui , aqui , aqui , aqui e alguns outros lugares, vejo que a etapa de criação de rota nem sempre está incluída. Para roteamento dinâmico parece obrigatório, é claro. A leitura na rota MSDN-Create não está clara para mim se é obrigatória ou não e quando deve ser incluída.

sql-server-2008-r2 service-broker
  • 1 respostas
  • 245 Views
Martin Hope
Yaroslav
Asked: 2014-05-24 02:37:48 +0800 CST

Implicações de segurança que desativam a promoção de transação distribuída para servidor vinculado

  • 8

Eu tenho um servidor vinculado e preciso executar a seguinte instrução:

INSERT INTO...EXEC linkedserver.sp @parameter

Ambos os servidores SQL Server 2008R2 SP1. Assim que executo, recebo este erro:

Msg 7391, Nível 16, Estado 2, Linha 6 A operação não pôde ser executada porque o provedor OLE DB "SQLNCLI10" para o servidor vinculado "MY.LINKED.SERVER" não pôde iniciar uma transação distribuída.

Depois de pesquisar o erro, vi que muito recomendo executar:

EXEC master.dbo.sp_serveroption
     @server = N'[mylinkedserver]',
     @optname = N'remote proc transaction promotion',
     @optvalue = N'false'

Há alguma implicação de segurança nesta ação da qual eu deva estar ciente?

Outra opção é usar as propriedades avançadas do objeto de servidor vinculado no servidor principal:

insira a descrição da imagem aqui

sql-server-2008-r2 linked-server
  • 1 respostas
  • 12010 Views
Martin Hope
Yaroslav
Asked: 2014-05-01 02:27:42 +0800 CST

Otimize a cláusula where usando datas

  • 5

Estou tentando otimizar várias consultas que usam um padrão semelhante em uma das WHEREcláusulas:

AND (DATEADD(DAY
            , ISNULL(a.[due_days], 30) + 30
            , [dbo].[CalcDate]([type], date1, date2, date3, date4, NULL))
            ) < GETDATE()

O CalcDateudf baseado no typevalor do campo faz algumas comparações e retorna uma data. Em seguida, adiciona uma quantidade de dias a essa data e compara com a data atual. Para poder usar um índice existente em due_daysQuero transformar a operação para aplicar todas as transformações a GETDATE(), digamos que quero fazer isso sargable, se possível. Além disso, se houver alguma recomendação sobre o que pode ser feito para melhorar ainda mais o uso do udf.

t-sql sql-server-2008-r2
  • 1 respostas
  • 547 Views
Martin Hope
Yaroslav
Asked: 2014-04-30 00:37:17 +0800 CST

Uma única solicitação em lote é equivalente a uma única solicitação tsql?

  • 0

Estou analisando algumas métricas de desempenho e todas as recomendações incluem monitoramento Batch Requests/sec. Mas, talvez uma pergunta boba, uma única solicitação em lote corresponde a exatamente uma instrução tsql? Digamos que ele contenha exatamente uma seleção ou uma atualização, etc. Assim, por exemplo, um procedimento armazenado com 3 seleções e 2 inserções aciona 5 solicitações em lote. Ou, como penso, uma solicitação em lote pode incluir, por exemplo, um procedimento armazenado completo, uma função, várias instruções de seleção/atualização/inserção, etc.

Tudo o que posso encontrar é semelhante a estas descrições:

  • TechNet Número de lotes de comandos Transact-SQL recebidos por segundo. Essa estatística é afetada por todas as restrições (como E/S, número de usuários, tamanho do cache, complexidade das solicitações e assim por diante). Solicitações de lote altas significam uma boa taxa de transferência.
  • Entendendo como o SQL Server executa uma consulta Solicitação de lote Este tipo de solicitação contém apenas texto T-SQL para que um lote seja executado. Esse tipo de solicitação não possui parâmetros, mas obviamente o próprio lote T-SQL pode conter declarações de variáveis ​​locais. Este é o tipo de solicitação que o SqlClient envia se você invocar qualquer um dos SqlCommand.ExecuteReader(), ExecuteNonQuery(), ExecuteScalar(), ExecuteXmlReader() (ou seus respectivos equivalentes assíncronos) em um objeto SqlCommand com uma lista de parâmetros vazia. Se você monitorar com o SQL Profiler, verá uma classe de evento SQL:BatchStarting
performance t-sql
  • 1 respostas
  • 531 Views
Martin Hope
Yaroslav
Asked: 2014-04-05 05:05:12 +0800 CST

Usando CHECKSUM na cláusula where

  • 1

Estou passando por um procedimento armazenado longo e encontrei isso, como parte de uma consulta longa:

SELECT ....
FROM   ---
WHERE  condition
  AND  CHECKSUM(r.roomprovider_id) <> CHECKSUM(ISNULL(br.roomprovider_id, r.roomprovider_id))

roomprovider_idé um INTvalor

É a primeira vez que vejo e não tenho ideia do que está sendo alcançado com isso. Fiz algumas pesquisas, li a definição de CHECKSUM nas páginas de tecnologia e mais algumas fontes, mas não consigo entender o motivo de usar CHECKSUMaqui.

Não estou procurando uma resposta que explique exatamente esse caso (se possível, melhor ainda), mas ficaria satisfeito com uma resposta explicando o objetivo dessa maneira de usar checksum.

t-sql sql-server-2008-r2
  • 1 respostas
  • 364 Views
Martin Hope
Yaroslav
Asked: 2014-02-19 03:53:43 +0800 CST

Criar banco de dados antes de restaurar vários arquivos

  • 1

Eu tenho vários bancos de dados, a maioria deles com vários arquivos (dados e logs) e vários backups diff e trn. Já tenho um script de restauração (agendado e funcionando em outro servidor) que pega todos os arquivos necessários e os restaura pelo caminho UNC. Há uma verificação no início que verifica se o banco de dados existe, caso contrário, gera um erro. Mas, em vez disso, quero criar o banco de dados e restaurá-lo. Não quero usar a MOVEopção no RESTOREextrato. Já fiz algumas pesquisas e o que encontrei não atende as minhas necessidades.

Então, como posso criar uma CREATEdeclaração para corresponder ao que restaurarei na próxima etapa? Talvez uma pergunta boba, mas não consigo descobrir como fazê-lo.

Editar

Do comentário de Aaron, entendo agora por que não posso impedir o uso de arquivos MOVE. Mas então devo criar o banco de dados com todos os grupos de arquivos necessários, correto? Algo assim :

CREATE DATABASE [Testdb] ON  PRIMARY 
    ( NAME = N'Testdb', FILENAME = N'F:\SQLDBs\Testdb.mdf' , SIZE = 102400KB ,
      MAXSIZE = UNLIMITED, FILEGROWTH = 1048576KB ), 
 FILEGROUP [TEST_DATA] 
    ( NAME = N'Test_Data', FILENAME = N'F:\SQLDBs\Test_Data.ndf' , SIZE = 5242880KB ,
      MAXSIZE = UNLIMITED, FILEGROWTH = 1048576KB ), 
 FILEGROUP [TEST_DATA2] 
    ( NAME = N'Test_Data2', FILENAME = N'F:\SQLDBs\Test_Data2.ndf' , SIZE = 5242880KB ,
      MAXSIZE = UNLIMITED, FILEGROWTH = 1048576KB ), 
 FILEGROUP [TEST_INDEX] 
    ( NAME = N'Test_Index', FILENAME = N'F:\SQLDBs\Test_Index.ndf' , SIZE = 5242880KB,
      MAXSIZE = UNLIMITED, FILEGROWTH = 1048576KB )
 LOG ON 
    ( NAME = N'Testdb_log', FILENAME = N'G:\SQLLogs\Testdb_log.ldf' , SIZE = 1048576KB,
      MAXSIZE = 2048GB , FILEGROWTH = 1048576KB )
GO
ALTER DATABASE [Testdb] SET COMPATIBILITY_LEVEL = 100
GO
sql-server-2008-r2 backup
  • 1 respostas
  • 183 Views
Martin Hope
Yaroslav
Asked: 2014-02-06 06:12:53 +0800 CST

Trabalhos para ciclos de logs de erros

  • 3

Algumas semanas atrás, fiz esta pergunta . Erros registram várias perguntas e obtive a resposta de que precisava. Com base na resposta e em algumas leituras, pretendo criar os seguintes trabalhos:

  • circule o log de erros assim que atingir um tamanho em Mb ou expandir para, digamos, 2 semanas
  • mova o log de erros mais antigo para um local diferente quando atingirmos o limite de arquivos de logs de erros arquivados (agora temos o padrão, 6)

Na resposta à minha pergunta anterior, obtive o trecho do powershell que estou postando no final para obter o tamanho dos logs de erro. Mas é a primeira vez que tentarei fazer algo com o powershell, então não sei nem por onde começar com isso. Qualquer ajuda para configurar esses trabalhos? Talvez o powershell não seja necessário e possa ser feito usando CmdExec ou tsql? Não é que eu conheça o CmdExec, apenas perguntando sobre outras abordagens. O melhor seria o tsql, pois tenho mais experiência com ele.

$SqlServer = New-Object Microsoft.SqlServer.Management.Smo.Server("YOUR_SQL_SERVER_NAME")
$SqlServer.EnumErrorLogs() |
    Select-Object Name, @{Name = "SizeMB"; Expression = {[System.Math]::Round($_.Size/1024/1024,2)}}
maintenance sql-server-2008-r2
  • 1 respostas
  • 362 Views
Martin Hope
Yaroslav
Asked: 2014-01-31 07:48:32 +0800 CST

Use @@servername e db_name() na tarefa do operador de notificação

  • 2

Estou configurando um plano de manutenção e, por engano, adicionei uma "Tarefa de notificação do operador" com algum texto. Mas eu quero ser capaz de adicionar algo como:

O backup falhou em MyDatabase\Instance_name...blablabla

Acho que devo usar @@SERVERNAME e DB_NAME(db.database_id) de alguma forma, mas até agora não consigo descobrir como fazê-lo, talvez seja trivial, mas sem sorte.

sql-server sql-server-2008-r2
  • 1 respostas
  • 1145 Views
Martin Hope
Yaroslav
Asked: 2014-01-28 00:00:40 +0800 CST

Modo de usuário único quando foi configurado

  • 3

Estou tentando descobrir quando um banco de dados em nossa instância foi configurado como, SINGLE USER MODEmas não consigo encontrar essa informação. Usando tsql ou GUI. Talvez não seja possível saber essa informação? Essas ações são registradas em algum lugar? Ou precisamos forçar esses logs?

sql-server-2008-r2
  • 1 respostas
  • 42 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve