AttachDbFileName
je hrozná a zavádějící vlastnost. Co se stane, je, že každá aplikace, která se připojí k této „databázi“, vytvoří kopii datového souboru. Pokud tedy Machine1
připojí a provede změny, tyto změny jsou pro Machine2
neviditelné . To způsobuje spoustu zmatků i ve scénáři s jedním počítačem, protože lidé se připojí přes Visual Studio, provedou nějakou aktualizaci a pak to neuvidí z Management Studio. Nebo naopak. User Instance
funkce byla ukončena
z důvodu; prosím přestaňte používat obě tyto možnosti.
Protože chcete, aby se více strojů/aplikací připojovalo k stejnému kopii vaší databáze, řešení, které chcete, je mít jedinou kopii databáze připojenou k jedné instanci SQL Serveru a obě aplikace/stroje se pouze připojují k této jediné kopii.
Na MACHINE1-PC
udělejte toto:
-
Přesunout
ShopDatabase.mdf
as ním související.ldf
soubor z vaší uživatelské složky a do datové složky vaší instance. To bude něco jako: -
Připojte se k místní instanci Express pomocí
.\SQLEXPRESS
. Připojit databázi pomocí následujícího kódu:CREATE DATABASE ShopDatabase ON (FILENAME = 'C:\...\ShopDatabase.mdf'), -------------------^^^ fill this in (FILENAME = 'C:\...\ShopDatabase_Log.ldf') -------------------^^^ fill this in FOR ATTACH; -- if there is no log file, you may need to do: CREATE DATABASE ShopDatabase ON (FILENAME = 'C:\...\ShopDatabase.mdf') -------------------^^^ fill this in FOR ATTACH_REBUILD_LOG;
-
Určete externí IP adresu
MACHINE1-PC
(můžete to udělat pomocí příkazu ping z jiného počítače - lokálně vám to řekne127.0.0.1
což je k ničemu). Za předpokladu, že máte pevnou IP a nepoužíváte DHCP, bude to pravděpodobně spolehlivější způsob připojení, nebo alespoň chybí další krok (rozložení názvu). Pokud používáte DHCP, nebudete na to chtít spoléhat, protože vaše IP adresa se může časem změnit. Váš připojovací řetězec by nyní měl být:Data Source=MACHINE1-PC\SQLEXPRESS; Network=DBMSSOCN; Integrated Security=True; Initial Catalog=ShopDatabase; -- or: Data Source=<<IP Address>>\SQLEXPRESS; Network=DBMSSOCN; Integrated Security=True; Initial Catalog=ShopDatabase; -- (replace <<IP Address>> of course)
Na Machine1
váš připojovací řetězec mohl použijte Data Source=.\SQLEXPRESS
, ale je lepší být konzistentní, než ušetřit pár úhozů. Tímto způsobem, pokud provedete další změny v konfiguračním souboru atd., mohou být distribuovány na další počítače, aniž byste museli měnit název počítače.