sql >> Databáze >  >> RDS >> Sqlserver

Databáze SQL Server na sdílené složce UNC

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:

  1. 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:

  2. 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;
    
  3. 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 řekne 127.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.




  1. Vložte více řádků s parametry SQL Server

  2. SQL – Jak vybrat řádek se sloupcem s maximální hodnotou (+ seskupit podle)

  3. Hromadná aktualizace Mysql

  4. Primární klíče s Apache Spark