Welcome to Sign in | Help
in Search

create database programatic

Last post 07-18-2011, 10:05 AM by sarateanu_sorin. 21 replies.
Page 1 of 2 (22 items)   1 2 Next >
Sort Posts: Previous Next
  •  07-11-2011, 11:53 AM 8827

    create database programatic

    care este cea mai buna metoda pentru a crea o BD programatic ? (declansata din aplicatia Client.)

    folosesc SS 2008 R2 , si Vfp7 pt. aplicatia Client.

    pe server am creeat 2 variante (2 SP) care au parametru de intrare @dbname , ambele merg bine din SSMS :
    1 - cu restore from backup ..
    2 - scriptul generat de "script database ..."
    l-am copiat intr-o SP cu parametru @dbname .. si prelucrare pe sir .... utilizand
    exec(@stringcommand)


    in schimb ..din aplicatia Client :

    error 226 "Create Database statment not allowed within multi-statment transaction." ...

    conectarea o fac fie cu string de conectare ,
    fie prin ODBC .. rezultand aceeasi eroare.

  •  07-11-2011, 1:36 PM 8829 in reply to 8827

    Re: create database programatic

    Vezi daca te ajuta
    http://social.msdn.microsoft.com/Forums/pl-PL/adodotnetdataproviders/thread/594ff024-8af6-40b3-89e0-53edb3ad7245
    Daca nu, da detalii despre codul folosit.
  •  07-11-2011, 9:31 PM 8830 in reply to 8829

    Re: create database programatic

    Daca aplicatia e sub dot net framwork poti folosi api SMo(sql server managemnt objects)
    Secolul XXI ori va fi religios ori nu va fi deloc
  •  07-11-2011, 11:03 PM 8832 in reply to 8830

    Re: create database programatic

    ExecuteNonQuery cu Create database ca si comanda?
    Si de ce odbc la SQL Server?
    Dar cel mai bine, dupa cum si Diana ti-a sugerat pune codul
  •  07-12-2011, 9:55 AM 8833 in reply to 8832

    Re: create database programatic

    procedura dbo.RestoreDatabase:

    CREATE PROCEDURE [dbo].[RestoreDataBase]
    -- Add the parameters for the stored procedure here
    @dbname varchar(128)
    AS
    BEGIN

    SET NOCOUNT ON;
    declare @datapath varchar(max),
    @datafilename varchar(128),
    @datalogname varchar(128),
    @commandstring nvarchar(max),
    @mesajeroare varchar(50)

    set @datapath ='C:\Program Files\Microsoft SQL Server\MSSQL10_50.PRODATASQL\MSSQL\DATA\'
    set @datafilename=@datapath+@dbname+'.mdf'
    set @datalogname=@datapath+@dbname+'.ldf'


    if exists(select database_id from sys.databases where name =@dbname)
    begin
    set @mesajeroare='Baza de Date: '+@dbname+' exista deja!'
    raiserror(@mesajeroare,16,10) with nowait
    return
    end

    --BACKUP DATABASE prodata_model
    -- TO bckupdev_prodatamodel

    RESTORE FILELISTONLY
    FROM bckupdev_prodatamodel

    set @commandstring='RESTORE DATABASE ' + @dbname + ' FROM bckupdev_prodatamodel
    WITH recovery,
    MOVE '+char(39)+'prodata_model'+CHAR(39)+' TO '+char(39)+@datafilename+CHAR(39)+',
    MOVE '+char(39)+'prodata_model_log'+CHAR(39)+' TO '+CHAR(39)+@datalogname+CHAR(39)+',
    replace'

    exec(@commandstring)
    --exec sp_executesql @commandstring,N'@dbname varchar(128),@datafilename varchar(128),@datalogname varchar(128)',
    -- @dbname,@datafilename,@datalogname


    END

  •  07-12-2011, 10:06 AM 8834 in reply to 8833

    Re: create database programatic

    procedura de mai sus .. merge bine din SSMS ..

    din aplicatia VFP: am incercat mai multe variante:
    1 - cu sqlexec(nHandle,csqlsir) .. unde sqlsir="exec [prodata].dbo.restoredatabase 'test_db'"

    cu urmatorul rez:
    - in modul Asyncron ..intoarce 0 (still executing) ...si asa "moare" ...fara sa faca nimic pe server
    -in modul syncron ..intoarce -1 ..adica "Connectivity error: Unable to retrieve specific error information. Driver is probably out of resources"

    a 2-a varianta:

    OConn = CREATEOBJECT("ADODB.Connection")
    OConn.ConnectionString = goapp.connectstring
    OConn.open
    oconn.Execute(ctext)
    oConn.Close

    ..asta merge ...in sensul ca creeaza BD-ul pe server ..dar ramane in Recovery State.


    baza de date ramane in ..Recovery State..
    deci ...alta ciudatenie...

  •  07-12-2011, 10:11 AM 8835 in reply to 8834

    Re: create database programatic

    scuze .. ctext este tot csqlsir ..adica:
    "exec [prodata].dbo.restoredatabase 'test_db'"

    lucrez in VFP ver. 7 ..pt. ca pe asta am licenta ...

  •  07-12-2011, 10:13 AM 8836 in reply to 8835

    Re: create database programatic

    string-ul de conectare este:

    "DRIVER={SQL Server Native Client 10.0};SERVER=laptop\prodatasql;DATABASE=prodata;Uid=sorin;Pwd=142400;WSID=LAPTOP;APP=Prodata Erp"
  •  07-12-2011, 10:38 AM 8837 in reply to 8836

    Re: create database programatic

    1) Cele două teste (din SSMS şi din app. VFP) sunt realizate pe acelaşi server SQL ?

    2) Vezi dacă log-ul SQL Server-ului conţine informaţii privitoare la operaţiunea de RESTORE:
    EXEC master..xp_readerrorlog



  •  07-12-2011, 11:25 AM 8838 in reply to 8837

    Re: create database programatic

    da .. sunt pe acelasi server ..

    nu am verificat .. verific acum
  •  07-12-2011, 2:06 PM 8839 in reply to 8837

    Re: create database programatic

    din ..xp_readerrorlog am gasit ceva de genul:

    "The database 'test_db' is marked RESTORING and is in a state that does not allow recovery to be run."
  •  07-12-2011, 3:04 PM 8840 in reply to 8839

    Re: create database programatic

    Cumva baza ta de date este pe recovery model FULL si asteapta restore si de transaction log?
    Ai testat restore din acelasi backup si este OK?
  •  07-12-2011, 3:42 PM 8841 in reply to 8840

    Re: create database programatic

    BD -ul are Recovery model: "Simple" ...

    ..si da .. am testat din acelasi backup ...din SSMS ..si e ok


  •  07-12-2011, 3:45 PM 8842 in reply to 8830

    Re: create database programatic

    din pacate VFP 7. nu este dot.net ...
  •  07-12-2011, 3:50 PM 8843 in reply to 8842

    Re: create database programatic

    Folosiţi SQL Profiler pentru a vedea care sunt diferenţele între apelul procedurii stocate din SSMS (succes) şi apelul procedurii stocate din VFP (eroare).
Page 1 of 2 (22 items)   1 2 Next >
View as RSS news feed in XML
Powered by Community Server (Commercial Edition), by Telligent Systems