Welcome to Sign in | Help
in Search

Cum sa atasez o baza de date fara fisierul de log

Last post 01-18-2007, 6:49 PM by rremus. 12 replies.
Sort Posts: Previous Next
  •  01-15-2007, 10:33 PM 1528

    Cum sa atasez o baza de date fara fisierul de log

    Salut,

    Am nevoie sa instalez pe calculatoarele userilor o baza de date SQL Server 2005 (mai exact e versiunea Express SP1) si nu reusesc sa o atasez fara sa trimit si fisierul de log.

    Attach-ul vreau sa il fac direct din aplicatie si pentru asta folosesc urmatorul connection string:

    Provider=SQLNCLI.1;Integrated Security=SSPI;Persist Security Info=False;Data Source=.\SQLEXPRESS;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Use Encryption for Data=False;Tag with column collation when possible=False;MARS Connection=False;DataTypeCompatibility=0;Trust Server Certificate=False;AttachDBFileName=C:\test\data1.mdf

    Conexinuea incearca sa se deschida si eroarea pe care mi-o intoarce este: File activation failure. The physical file name "C:\test\data1_log.ldf" may be incorrect.

    Acelasi lucru se intampla si daca din management studio ii dau:

    CREATE DATABASE pubs ON PRIMARY
       (FILENAME =
          'C:\test\data1.mdf')
       FOR ATTACH
     

    In mod ciudat, daca incerc acelasi lucru in folderul in care e versiunea de development, atasarea merge si fara fisierul log care pur si simplu e recreat, fara nici o eroare. Cand incerc sa fac acelasi lucru intr-un folder de deployment, apare eroarea de mai sus. Nu reusesc sa-mi dau seama care sunt diferentele si de ce intr-o parte merge si in alta nu.

    Radu 

    Filed under:
  •  01-16-2007, 12:09 AM 1529 in reply to 1528

    Re: Cum sa atasez o baza de date fara fisierul de log

    Iar motivul pentru care nu potzi copia si LDF-ul este... ?


    http://rusanu.com
  •  01-16-2007, 8:46 AM 1530 in reply to 1528

    Re: Cum sa atasez o baza de date fara fisierul de log

    O discutie despre atasarea unei bd http://sqlserver.ro/forums/thread/281.aspx
    Gheorghe Ciubuc,SQL Server Influencer, MCP(SQL 2000), MCTS (SQL Server 2005) , OCA(Oracle 9i), Sybase(Brainbench)
  •  01-16-2007, 10:52 AM 1531 in reply to 1530

    Re: Cum sa atasez o baza de date fara fisierul de log

    Puteti folosi procedura stocata sp_attach_single_file_db ca in exemplul preluat din Books Online: 

    USE master;
    GO
    EXEC sp_detach_db @dbname = 'AdventureWorks';
    EXEC sp_attach_single_file_db @dbname = 'AdventureWorks',
        @physname = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_Data.mdf';


    Cristian Andrei Lefter, SQL Server MVP
    MCT, MCSA, MCDBA, MCAD, MCSD .NET,
    MCTS, MCITP - Database Administrator SQL Server 2005
    http://sqlserver.ro
  •  01-16-2007, 12:20 PM 1532 in reply to 1531

    Re: Cum sa atasez o baza de date fara fisierul de log

    Vad ca in connection string nu este prezent numele bazei de date...

    In BOL ---> Sql Server Programming reference ---> Building applications with SQL Native Client ---> Using Connection String Keywords with SQL Native Client se specifica:

     "AttachDbFileName:

    The name of the primary file (include the full path name) of an attachable database. To use AttachDBFileName, you must also specify the database name with the provider string Database keyword. If the database was previously attached, SQL Server does not reattach it (it uses the attached database as the default for the connection)."

     

  •  01-16-2007, 6:18 PM 1533 in reply to 1532

    Re: Cum sa atasez o baza de date fara fisierul de log

    Am incercat si cu sp_attach_single_file_db si eroarea pe care o primesc e aceeasi, nu gaseste logul:

    File activation failure. The physical file name "D:\DEVELO~1\SEPLUS~4\trunk\bin\data\seplus_log.ldf" may be incorrect.
    Msg 5123, Level 16, State 1, Line 1
    CREATE FILE encountered operating system error 5(error not found) while attempting to open or create the physical file 'C:\Program Files\SellerEngine Software\SellerEngine Plus FBA\data\seplus_log.LDF'.
    Msg 1813, Level 16, State 2, Line 1
    Could not open new database 'AdventureWorks'. CREATE DATABASE is aborted.



    De mentionat aici ar fi ca el incearca sa isi gaseasca logul acolo unde il stia ca exista (in trunk, de unde am copiat-o initial). Totul bine pana aici, nu o gaseste, dupa care incearca sa creeze LDF-ul in Program Files, la care da eroare. Pe directorul ala are toate drepturile de scriere, deci problema e ca dupa ce ii da eroarea Not Found (cand incearca sa o deschida), nu o recreeaza.

    Ciudatenia cea mai mare in problema asta este ca daca incerc sa atasez fisierul intr-un path care nu contine spatii, totul merge perfect. In momentul in care il pun intr-un path cu spatii, da eroarea de mai sus. Nu ma intrebati cum am ajuns la concluzia asta ca am stat o zi intreaga cu el in fata incercand toate posibilitatile la care m-am gandit :) I-am pus deci path-ul 8.3 la AttachDBFileName dar face exact la fel. Si ca sa fie totul si mai ciudat, uneori merge si intr-un path cu spatii, dar foarte inconsistent. De exemplu acum pe un calculator merge si pe al meu nu, cu acelasi exe si cu aceeasi baza de date.

    Parametrul de Database e intr-adevar sugerat sa fie inclus cand te conectezi cu AttachDBFileName, dar de fapt daca nu i-l dai numele bazei de date este exact pathul mdf-ului trimis la AttachDBFileName. 

    Vreo idee? 

  •  01-16-2007, 7:33 PM 1534 in reply to 1533

    Re: Cum sa atasez o baza de date fara fisierul de log

    Ok, informatii noi. Se pare ca nu este problema cu spatiile in path, ci cu orice subdirector in \Program Files sau \Windows. In orice alta parte ar fi (poate n-am gasit eu toate directoarele "ciudate") merge. Am incercat pe 3 calculatoare chestia asta si toate se comporta exact la fel. Am SQL Server 2005 Express SP1.
  •  01-16-2007, 7:49 PM 1535 in reply to 1534

    Re: Cum sa atasez o baza de date fara fisierul de log

    Vezi daca te ajuta

    http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=120536&SiteID=1


  •  01-16-2007, 9:14 PM 1536 in reply to 1535

    Re: Cum sa atasez o baza de date fara fisierul de log

    Da, foarte tare. Solutia este sa schimbi builtin login din Network Service in Local System in proprietatile serviciului. Nu stiu exact care sunt implicatiile modificarii, dar o voi face programatic la momentul atasarii dupa care o schimb din nou la loc.

    Foarte ciudata problema oricum, ce nu i-o placea lui la o baza de date pusa in Program Files, el stie... 

    Mersi mult pentru ajutor.

    Radu 

  •  01-16-2007, 10:47 PM 1537 in reply to 1536

    Re: Cum sa atasez o baza de date fara fisierul de log

    Vezi si BOL ---> Preparing to install SQL Server 2005 ---> Setting up Windows Service Accounts(---> atentie la folosirea Local System Account...)

    Aici poti gasi si "access control list" pentru contul pe care "ruleaza" SQL Server (---> Reviewing Access Control Lists Created for SQL Server Service Accounts).

    Poti incerca de exemplu sa atasezi baza in  \Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data (ca in exemplul de folosire al sp_attach_single_file_db) - acolo contul SQL Server are "full control"...

     

  •  01-18-2007, 1:36 AM 1550 in reply to 1529

    Re: Cum sa atasez o baza de date fara fisierul de log

    Vad ca intrebarea mea a ramas ignorata. O baza de date SQL consta atit din MDF, cit si din LDF. O procedura de distributzie care alege sa distribuie numai MDF-ul risca sa aiba suprize neplacute daca cumva log-ul contine schimbari care nu au fost aplicate in MDF.  


    http://rusanu.com
  •  01-18-2007, 5:23 PM 1557 in reply to 1550

    Re: Cum sa atasez o baza de date fara fisierul de log

    Aplicatia pe care o distribui vine cu o baza de date continand doar structura tabelelor sau daca are date, sunt informatii de configurare care sunt in principiu fixe de la un release la altul. Deci varianta pe care o am este sa distribui un log gol pe care prefer sa nu-l distribui deloc.
  •  01-18-2007, 6:49 PM 1559 in reply to 1557

    Re: Cum sa atasez o baza de date fara fisierul de log

    Fii foarte atent, asigura-te ca ai facut checkpoint inainte de distribuire etc. Pasesti pe gheatza foarte subtire. Ai considerat sa distribui in back-up sau un script care creeaza baza de date?
    http://rusanu.com
View as RSS news feed in XML
Powered by Community Server (Commercial Edition), by Telligent Systems