2009-06-16 9 views
2

Je veux savoir et les avantages et les inconvénients de la définition de sp_tableoption de "verrou de table sur le chargement en bloc" pour SQL Server 2005/2008? Mon scénario est, j'ai 3 threads travaillant sur la base de données, un thread de requête, un thread insert en vrac et un thread supprimer.sp_tableoption dans SQL Server

Voici le lien associé MSDN pour sp_tableoption,

http://msdn.microsoft.com/en-us/library/ms173530.aspx

merci à l'avance, George

Répondre

1

suffit de le faire dans le BULK INSERT au lieu

exemples

en vrac Insérer qui verrouillera la table

BULK INSERT Northwind.dbo.[ORDER Details] 
    FROM 'f:\orders\lineitem.tbl' 
    WITH 
    (
     FIELDTERMINATOR = '|', 
     ROWTERMINATOR = ':\n', 
     FIRE_TRIGGERS, 
     TABLOCK --this is it 
    ) 

Cette déclaration ne se verrouille pas la table

BULK INSERT Northwind.dbo.[ORDER Details] 
     FROM 'f:\orders\lineitem.tbl' 
     WITH 
     (
      FIELDTERMINATOR = '|', 
      ROWTERMINATOR = ':\n', 
      FIRE_TRIGGERS 
     ) 

BCP avec tablock en utilisant le -h (pour indication) commutateur et "TABLOCK"

bcp pubs..authors2 in authors.txt -c -t, -Sservername -Usa -Ppass -h "TABLOCK" 

vous pourriez faire un insert en vrac par exemple à partir de SSIS ou DTS et à la serrure de table il

par exemple dans DTS sous la tâche de données de transformation regardez dans l'onglet options, vérifiez l'utilisation de charge rapide et verrouillage de table SSIS a quelque chose de similaire

+0

Je suis confus. Vous avez mentionné - "faites-le simplement dans le BULK INSERT", mais je n'ai pas remarqué que vous avez défini une option table dans votre instruction SQL d'insertion en bloc? Pourriez-vous clarifier s'il vous plaît? – George2

+1

Je le fais avec l'argument TABLOCK dans la première requête et avec -h "TABLOCK" dans la deuxième requête – SQLMenace

+1

J'ai mis à jour la réponse en vous donnant 2 requêtes pour le BULK INSER un avec et un sans le TABLOCK – SQLMenace