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 / dba / Perguntas / 305872
Accepted
AcePL
AcePL
Asked: 2022-01-11 01:23:37 +0800 CST2022-01-11 01:23:37 +0800 CST 2022-01-11 01:23:37 +0800 CST

SQL Server SSMS - Funcionalidade de edição de 200 linhas - é possível que duas ou mais pessoas alterem o trabalho uma da outra usando essa funcionalidade?

  • 772

Vamos considerar um cenário:

Duas ou mais pessoas estão trabalhando em uma tabela que armazena dados de configuração de um aplicativo. Existem várias configurações nessa tabela, para que cada pessoa possa trabalhar em seu próprio conjunto de dados.

A funcionalidade de edição de 200 linhas é mais rápida do que o script, porque há muitos caracteres especiais que precisam escapar no script, em Editar é apenas copiar e colar na maioria dos casos.

Cada pessoa trabalha em linhas específicas para uma configuração, portanto, a consulta para edição contém a cláusula where. Claro que não está acontecendo constantemente, mas ao testar, às vezes há períodos de atividades incomuns.

Agora, aqui está a pergunta: quando as alterações são salvas em Editar 200 linhas, o SSMS confirma a tabela inteira ou apenas as linhas no painel? Além disso: e se duas pessoas acidentalmente trabalharem no mesmo conjunto de dados - elas substituirão o trabalho uma da outra?

Minha intuição diz "não, apenas linhas específicas" para a primeira e "sim" para a segunda, mas não consigo encontrar nenhuma descrição sobre como essa função de interface do usuário do SSMS funciona em segundo plano (o que pode ser porque sou excepcionalmente lento e denso hoje... não uma corona, mas não me sentindo bem).

sql-server ssms
  • 1 1 respostas
  • 76 Views

1 respostas

  • Voted
  1. Best Answer
    Tibor Karaszi
    2022-01-11T02:10:26+08:002022-01-11T02:10:26+08:00

    Não existe tal coisa como "commit tabela inteira". É executada uma modificação que afeta x número de linhas com base na cláusula WHERE. No final da transação (fim da instrução, a menos que você tenha especificado BEGIN tran e agora diga COMMIT ou ROLLBACK), as linhas que foram modificadas são confirmadas ou revertidas.

    Quanto à possibilidade de um conflito. Eu posso ver duas maneiras de buscar resposta:

    1. Execute um rastreamento e veja qual SQL é enviado.

    2. Tente.

    Fiz um trace e não vi nada no T-SQL que te proteja do conflito.

    Quando tentei, porém, ao fazer a modificação como "segunda pessoa", recebi uma mensagem no SSMS:

    insira a descrição da imagem aqui

    O que o SSMS fez foi enviar um UPDATE com uma cláusula WHERE para cada coluna (compare com o valor ao ler a linha). Se obtiver 0 linhas de volta, assume que alguém modificou a linha enquanto estávamos olhando para ela e nos pede para fazer isso (não tenho o código-fonte do SSMS, então esta frase é minha suposição de como ela funciona isto). Se dissermos "Sim", ele envia mais um UPDATE com uma cláusula WHERE apenas para a coluna de chave primária. Aqui estão esses dois UPDATEs do meu rastreamento, o segundo enviado depois que eu respondi "Sim" na caixa de diálogo acima:

    exec sp_executesql N'UPDATE TOP (200) Sales.Customer SET TerritoryID = @TerritoryID WHERE (CustomerID = @Param1) AND (PersonID IS NULL) AND (StoreID = @Param2) AND (TerritoryID = @Param3) AND (AccountNumber = @Param4) AND (rowguid = @Param5) AND (ModifiedDate = @Param6)',N'@TerritoryID int,@Param1 int,@Param2 int,@Param3 int,@Param4 nvarchar(10),@Param5 uniqueidentifier,@Param6 datetime',@TerritoryID=5,@Param1=2,@Param2=1028,@Param3=1,@Param4=N'AW00000002',@Param5='E552F657-A9AF-4A7D-A645-C429D6E02491',@Param6='2014-09-12 11:15:07.263'
    
    exec sp_executesql N'UPDATE TOP (200) Sales.Customer SET TerritoryID = @TerritoryID WHERE (CustomerID = @Param7)',N'@TerritoryID int,@Param7 int',@TerritoryID=5,@Param7=2
    
    • 4

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

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