sql >> Databasteknik >  >> RDS >> Sqlserver

vad är problemet med AttachDbFilename

Använder User Instance betyder att SQL Server skapar en speciell kopia av den databasfilen för användning av ditt program. Om du har två olika program som använder samma anslutningssträng får de två helt olika kopior av databasen. Detta leder till mycket av förvirring, eftersom folk kommer att testa att uppdatera data med sitt program, sedan ansluta till en annan kopia av sin databas i Management Studio och klaga på att deras uppdatering inte fungerar. Detta skickar dem genom en felaktig serie av vilda gåsjaktsteg och försöker felsöka fel problem.

Den här artikeln går in mer på djupet om hur man använder den här funktionen, men följ den allra första anmärkningen:User Instance funktionen har fasats ut . I SQL Server 2012 är de föredragna alternativen (i denna ordning, IMHO):

  1. Skapa eller bifoga din databas till en riktig instans av SQL Server. Din anslutningssträng behöver då bara ange instansnamnet, databasnamnet och autentiseringsuppgifter. Det kommer inte att ske någon sammanblandning eftersom Management Studio, Visual Studio och dina program alla kommer att ansluta till en enda kopia av databasen.

  2. Använd SqlLocalDb för lokal utveckling. Jag tror att jag pekade på den här artikeln igår:"Komma igång med SQL Server 2012 Express LocalDB."

  3. Använd SQL Server Compact. Jag gillar det här alternativet minst eftersom funktionaliteten och syntaxen inte är samma - så det kommer inte nödvändigtvis att förse dig med all funktionalitet du i slutändan kommer att vilja distribuera. Compact Edition är också utfasad, så det finns det.

Naturligtvis om du använder en version SqlLocalDb är inte ett alternativ - så du bör skapa en riktig databas och använda den konsekvent. Jag nämner bara alternativet Kompakt för fullständighetens skull - jag tror att det kan vara en nästan lika dålig idé som att använda AttachDbFileName .

EDIT: Jag har bloggat om detta här:

  • Dåliga vanor:Använder AttachDBFileName


  1. Använda Oracle JDeveloper 12c med Oracle Database 12c på Oracle Cloud Platform, del 1

  2. Få en lista över alla funktioner och procedurer i en Oracle-databas

  3. Eliminera MySQL Split-Brain i multimolndatabaser

  4. mysql pivot/crosstab-fråga