Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

База данни на SQL Server на UNC дял

AttachDbFileName е ужасна и подвеждаща функция. Това, което се случва е, че всяко приложение, което се свързва с тази "база данни", прави копие на файла с данни. Така че, ако Machine1 се свързва и прави промени, тези промени са невидими за Machine2 . Това причинява много объркване дори в сценарий с една машина, защото хората ще се свържат чрез Visual Studio, ще направят някаква актуализация и след това няма да го видят от Management Studio. Или обратното. User Instance функцията е отхвърлена по причина; моля, спрете да използвате и двете.

Тъй като искате множество машини/приложения да се свързват към едно и също копие на вашата база данни, решението, което искате, е да имате едно копие на базата данни, прикрепено към един екземпляр на SQL Server и двете приложения/машини просто да се свързват с това едно копие.

На MACHINE1-PC направете това:

  1. Преместете ShopDatabase.mdf и свързания с него .ldf файл от вашата потребителска папка и в папката с данни за вашия екземпляр. Това ще бъде нещо като:

  2. Свържете се с локалния експресен екземпляр чрез .\SQLEXPRESS . Прикачете базата данни използвайки следния код:

    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. Определете външния IP адрес на MACHINE1-PC (можете да направите това чрез ping от друга машина - локално ще ви каже 127.0.0.1 което е безполезно). Ако приемем, че имате фиксиран IP и не използвате DHCP, това вероятно ще бъде по-надежден начин за свързване или поне липсва допълнителна стъпка (разрешаване на името). Ако обаче използвате DHCP, няма да искате да разчитате на това, защото вашият IP адрес потенциално ще се промени с течение на времето. Вашият низ за връзка сега трябва да бъде:

    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)
    

На Machine1 вашият низ за връзка може използвайте Data Source=.\SQLEXPRESS , но по-добре да сте последователни, отколкото да спестите няколко натискания на клавиши. По този начин, ако направите други промени във вашия конфигурационен файл и т.н., те могат да бъдат разпространени на други машини, без да е необходимо да променяте името на машината.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да получа имена на колони от таблица в SQL Server?

  2. Подзаявка на sql сървър с разделен със запетая резултатен набор

  3. Средна стойност на групираните редове в Sql Server

  4. Ограничете редовете, върнати в заявка на SQL Server, като използвате клаузата TOP

  5. Навигиране в регистрационните файлове за грешки на SQL Server