Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Crear BD con Inno o archivo .bat

Estas en el tema de Crear BD con Inno o archivo .bat en el foro de SQL Server en Foros del Web. Hola comunidad, les cuento: tengo que hacer el instalador de una aplicación que usa una base de datos en sql server 7, y lo he ...
  #1 (permalink)  
Antiguo 31/05/2008, 20:29
Avatar de PPLPU  
Fecha de Ingreso: marzo-2008
Mensajes: 46
Antigüedad: 16 años, 9 meses
Puntos: 0
Pregunta Crear BD con Inno o archivo .bat

Hola comunidad, les cuento: tengo que hacer el instalador de una aplicación que usa una base de datos en sql server 7, y lo he intentado por medio de Inno Setup, y no logra terminar la creación de la base, si se conecta, pero marca error al intentar añadirla. Leí por ahí que se pueden ejecutar sentencias sql por medio del DOS, y por eso mi pregunta, si saben como se realizaria con un archivo .bat, o con Inno Setup. Aqui esta el código del script:

Código:
[Setup]
AppName=My Program
AppVerName=My Program version 1.5
CreateAppDir=no
DisableProgramGroupPage=yes
DefaultGroupName=My Program
UninstallDisplayIcon={app}\MyProg.exe
OutputDir=userdocs:Inno Setup Examples Output


{--- SQLDMO ---}

const
  SQLServerName = 'localhost';
  SQLDMOGrowth_MB = 0;

procedure SQLDMOButtonOnClick(Sender: TObject);
var
  SQLServer, Database, DBFile, LogFile: Variant;
  IDColumn, NameColumn, Table: Variant;
begin
  if MsgBox('Setup will now connect to Microsoft SQL Server ''' + SQLServerName + ''' via a trusted connection and create a database. Do you want to continue?', mbInformation, mb_YesNo) = idNo then
    Exit;

  { Create the main SQLDMO COM Automation object }

  try
    SQLServer := CreateOleObject('SQLDMO.SQLServer');
  except
    RaiseException('Please install Microsoft SQL server connectivity tools first.'#13#13'(Error ''' + GetExceptionMessage + ''' occurred)');
  end;

  { Connect to the Microsoft SQL Server }

  SQLServer.LoginSecure := True;
  SQLServer.Connect(SQLServerName);

  MsgBox('Connected to Microsoft SQL Server ''' + SQLServerName + '''.', mbInformation, mb_Ok);

  { Setup a database }

  Database := CreateOleObject('SQLDMO.Database');
  Database.Name := 'Inno Setup';

  DBFile := CreateOleObject('SQLDMO.DBFile');
  DBFile.Name := 'ISData1';
  DBFile.PhysicalName := 'c:\program files\microsoft sql server\mssql\data\IS.mdf';
  DBFile.PrimaryFile := True;
  DBFile.FileGrowthType := SQLDMOGrowth_MB;
  DBFile.FileGrowth := 1;

  Database.FileGroups.Item('PRIMARY').DBFiles.Add(DBFile);

  LogFile := CreateOleObject('SQLDMO.LogFile');
  LogFile.Name := 'ISLog1';
  LogFile.PhysicalName := 'c:\program files\microsoft sql server\mssql\data\IS.ldf';

  Database.TransactionLog.LogFiles.Add(LogFile);

  { Add the database }

  SQLServer.Databases.Add(Database); // AQUÍ MARCA ERROR

  MsgBox('Added database ''' + Database.Name + '''.', mbInformation, mb_Ok);

  { Setup some columns }

  IDColumn := CreateOleObject('SQLDMO.Column');
  IDColumn.Name := 'id';
  IDColumn.Datatype := 'int';
  IDColumn.Identity := True;
  IDColumn.IdentityIncrement := 1;
  IDColumn.IdentitySeed := 1;
  IDColumn.AllowNulls := False;

  NameColumn := CreateOleObject('SQLDMO.Column');
  NameColumn.Name := 'name';
  NameColumn.Datatype := 'varchar';
  NameColumn.Length := '64';
  NameColumn.AllowNulls := False;

  { Setup a table }

  Table := CreateOleObject('SQLDMO.Table');
  Table.Name := 'authors';
  Table.FileGroup := 'PRIMARY';

  { Add the columns and the table }

  Table.Columns.Add(IDColumn);
  Table.Columns.Add(NameColumn);

  Database.Tables.Add(Table);

  MsgBox('Added table ''' + Table.Name + '''.', mbInformation, mb_Ok);
end;

procedure CreateButton(ALeft, ATop: Integer; ACaption: String; ANotifyEvent: TNotifyEvent);
begin
  with TButton.Create(WizardForm) do begin
    Left := ALeft;
    Top := ATop;
    Width := WizardForm.CancelButton.Width;
    Height := WizardForm.CancelButton.Height;
    Caption := ACaption;
    OnClick := ANotifyEvent;
    Parent := WizardForm.WelcomePage;
  end;
end;

procedure InitializeWizard();
var
  Left, Top, TopInc: Integer;
begin
  Left := WizardForm.WelcomeLabel2.Left;
  TopInc := WizardForm.CancelButton.Height + 8;
  Top := WizardForm.WelcomeLabel2.Top + WizardForm.WelcomeLabel2.Height - 4*TopInc;

  CreateButton(Left, Top, '&SQLDMO...', @SQLDMOButtonOnClick);
  Top := Top + TopInc;
end;
Y el error que me sale:

http://img98.imageshack.us/img98/1209/sqlerrorlj9.png

Espero me puedan ayudar, desde ya gracias x su ayuda
  #2 (permalink)  
Antiguo 02/06/2008, 13:49
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 5 meses
Puntos: 180
Respuesta: Crear BD con Inno o archivo .bat

¿SQL SERVER 7.0?, Creo que deberia pensar en cambiar su version, minimo a una 2000.

7.0 esta descontinuado por Microsoft.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:57.