Newsgroup: it.comp.software.database
Titolo: Importare file ".MDF" in SQL-Server 7.0

Sono un pò arruginito con SQL-Server. Ho una file .MDF (salvato da un 
disco...) e devo ripristinare il db su un altro SQL-Server. Ho googlato 
un pò e ho scoperto che devo usare la SP sp_attach_single_file_db
Ho copiato il codice nel query analizer e l'ho eseguito, tutto ok ma non 
mi ha importato niente (selezionando il db "Prova" ovviamente)...
Dove sbaglio?
Grazie in anticipo!
[CODE]
create procedure sp_attach_single_file_db
@dbname sysname,
@physname nvarchar(260)
as
declare @execstring nvarchar (400)
set nocount on
	IF ((@dbname is null OR datalength(@dbname) = 0) OR
	   (@physname is null OR datalength(@physname) = 0))
	begin
		raiserror (15004,-1,-1)
		return (1)
	end
	select @execstring = 'CREATE DATABASE '
		+ quotename( @dbname , '[Prova]')
		+ ' ON (FILENAME =C:\MSSQL7\Data\FR_Data.MDF'
		+ ''''
		+ @physname
		+ ''''
		+ ' ) FOR ATTACH'
	exec (@execstring)
if @@error <>  0
	begin
		-- No need to raiserror as the CREATE DATABASE will do so
		return(1)
	end
	-- strip out replication from this database
if exists (select * from master.dbo.sysobjects where 
name=N'sp_removedbreplication')
	begin
		exec sp_removedbreplication @dbname
	end
	return (0) -- sp_attach_single_file_db
[\CODE]

 Grazie in anticipo!
Prego.
Ciao!
-- 
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://mvp.support.microsoft.com
http://italy.mvps.org

    @physname = 'c:\<percorso>\<nome_file>.mdf'
Grazie, ma ho già fatto il danno....potresti copiaincollarmi quella SP? 
Ho paura di averla "rimaneggiata" (se leggi il codice che ho postato ho 
modificato a mano la SP e l'ho sovrascritta...)
Ciao
-- 
    %
    |   Edoardo "Edoloz" Carminati
  (   ) Incompetent Linux User #301558
   } {  Per rispondere togli il_gatto_dal_forno
  (   ) "Gnothi seauton" "...Io sono alto 90 kg..."

 modificato a mano la SP e l'ho sovrascritta...)
Forse ho risistemato la SP, ma dice che i file non possono essere 
attivati e non puň creare il db....
Grazie ancora!

 postato ho modificato a mano la SP e l'ho sovrascritta...)
Ciao Edoardo,
mi č parso di capire che utilizzi SQL Server 7.0.
Purtroppo non ho a disposizione questa versione, ma ti posso incollare la sp
contenuta in SQL Server 2000:
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS OFF
GO
create procedure sp_attach_single_file_db
@dbname sysname,
@physname nvarchar(260)
as
declare @execstring nvarchar (400)
set nocount on
 IF ((@dbname is null OR datalength(@dbname) = 0) OR
    (@physname is null OR datalength(@physname) = 0))
 begin
  raiserror (15004,-1,-1)
  return (1)
 end
 select @execstring = 'CREATE DATABASE '
  + quotename( @dbname , '[')
  + ' ON (FILENAME ='
  + ''''
  + REPLACE(@physname,N'''',N'''''')
  + ''''
  + ' ) FOR ATTACH'
 exec (@execstring)
if @@error <>  0
 begin
  -- No need to raiserror as the CREATE DATABASE will do so
  return(1)
 end
 -- strip out replication from this database
if exists (select * from master.dbo.sysobjects where
name=N'sp_removedbreplication')
 begin
  exec sp_removedbreplication @dbname
 end
 return (0) -- sp_attach_single_file_db
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO


 Grazie ancora!


 stored procedure di sistema sp_attach_db;
Mitico! Funziona! Grazie ancora...
In pratica io avevo anche il file di log a disposizione, solo che 
l'avevo nella stessa directory del file .mdf, probabile che desse errore 
perchč trovava un file di log gią presente?
Ciao

 errore perchč trovava un file di log gią presente?
Per una brevissima panoramica sul transaction log leggi il seguente tip:
http://italy.mvps.org/MVPs/lbenaglia/LorenzoBenaglia-Tip-t-log.htm
Come hai potuto leggere il t-log č fondamentale nel funzionamento di SQL
Server.
Secondo me il problema era dovuto al fatto che non avevi effettuato il
detach o stoppato il servizio MSSQLServer prima di copiare l' .mdf.
Infatti i BOL dicono:
"When sp_attach_single_file_db attaches the database to the server, it
builds a new log file and performs additional cleanup work to remove
replication from the newly attached database.
Use sp_attach_single_file_db only on databases that were previously detached
from the server using an explicit sp_detach_db operation.
Use sp_attach_single_file_db only on databases that have a single log file.
Do not use this stored procedure on databases that have multiple log files".


 Do not use this stored procedure on databases that have multiple log files".
Questo è il mio caso, credo. Comunque ho riattaccato anche il vecchio 
file di log, si sa mai. (Ho riattaccato tutto il db, specificando i 2 file)
