Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Connessione a database SQL Server con C#
martedì 15 agosto 2006 - 21.11
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
paolo973
Profilo
| Senior Member
302
messaggi | Data Invio:
mar 15 ago 2006 - 21:11
Salve a tutti,
ho creato un database test.mdf con VS 2005 contenente una tabella sola e 2 record.
ho copiato il database test.mdf, che avevo creato per un'altra applicazione, nella direcory
C:\Documents and Settings\Administrator\Documenti\Visual Studio 2005\Projects\database\database
desidero accedere a tale tabella e stampare a video i due record.
Per far ciò ho usato una semplice ConsoleApplication in C# chiamata database il cui codice è il seguente:
__________________________________________________________________
using System;
using System.Data;
using System.Data.SqlClient;
namespace database
{
class Program
{
static void Main(string[] args)
{
Program t = new Program();
t.Run();
}
public void Run()
{
Console.WriteLine("Connessione");
String source = "Data Source=(local);Initial Catalog=test;Integrated Security=SSPI";
SqlConnection conn = new SqlConnection(source);
try
{
conn.Open();
Console.WriteLine("SONO QUI");
SqlCommand cmd = new SqlCommand("SELECT * FROM tabella", conn);
SqlDataReader myReader = cmd.ExecuteReader();
while (myReader.Read())
{
Console.WriteLine(myReader[0]);
}
myReader.Close();
}
catch (Exception e)
{
Console.WriteLine("Exception Occured -->> {0}", e);
}
finally
{
conn.Close();
}
}
}
}
__________________________________________________________________
l'applicazione parte ma non ottengo i due records ma solo la scritta :
Connessione
|
ed il cursore che lampeggia sotto.
la scritta "SONO QUI" non viene stampata presumo che l'errore sia nella connessione conn.
In esplora soluzioni non ho importato nessun database ed
in espora server non ho nessuna connessione.
dove sto sbagliando ?
Grazie sempre
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
mar 15 ago 2006 - 23:38
Prova una stringa di connessione del genere:
Server=localhost;DataBase=mydatabase;Integrated Security=SSPI"
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mer 16 ago 2006 - 01:08
>ho copiato il database test.mdf, che avevo creato per un'altra
>applicazione, nella direcory
>
>C:\Documents and Settings\Administrator\Documenti\Visual Studio
>2005\Projects\database\database
>
>desidero accedere a tale tabella e stampare a video i due record.
SQL Server è un database server non un database file based come Access!!
Questo significa che esiste un servizio che risponde alle richieste dei client, quindi l'engine risiede in un processo separato (potenzialmente su un computer remoto).
Un database SQL Server è *SEMPRE* costituito da almeno 2 files (ma possono essere molti di più):
- Un Master Data File (estensione .mdf) che contiene lo schema delle tabelle di sistema e se non specificato diversamente anche gli oggetti utente ed i dati;
- Un Transaction Log (estensione .ldf) che contiene l'elenco di tutte le transazioni eseguite sul database; quando fai una qualsiasi modifica ad una riga di una tabella, prima di tutto tale modifica verrà scritta nel transaction log e solo successivamente SQL Server provvederà a propagarla ai data files.
Tutto questo per dire che SQL Server funziona in modo COMPLETAMENTE differente da Access e NON è sufficiente copiare il file .mdf per spostare un database, ma occorre seguire potenzialmente 2 strade:
1) Sganciare il database da una istanza, copiare tutti i suoi files (.mdf, .ldf ed eventualmente i files .ndf) sul server di destinazione e ricollegarlo all'istanza. Queste operazioni vengono effettuare tramite la stored procedure sp_detach_db ed il comando CREATE DATABASE FOR ATTACH:
"sp_detach_db"
http://msdn2.microsoft.com/it-it/library/ms188031.aspx
"CREATE DATABASE (Transact-SQL)"
http://msdn2.microsoft.com/it-it/library/ms176061.aspx
"Scollegamento e collegamento di un database"
http://msdn2.microsoft.com/it-it/library/ms190794.aspx
2) Eseguendo un BACKUP ed il relativo RESTORE specificando tramite la clausola WITH MOVE dove posizionare sul file system del server di destinazione i files che costituiscono il database:
"BACKUP (Transact-SQL)"
http://msdn2.microsoft.com/it-it/library/ms186865.aspx
"RESTORE (Transact-SQL)"
http://msdn2.microsoft.com/it-it/library/ms186858.aspx
Leggi attentamente i paragrafi dei Books Online che ti ho segnalato, scegli uno dei due metodi in modo da trasferire correttamente il database.
>Grazie sempre
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
paolo973
Profilo
| Senior Member
302
messaggi | Data Invio:
mer 16 ago 2006 - 01:36
La stringa proposta non funziona.
Inoltre ho provato a non spostare nessun database ma a crearlo nuovamente
nessun risultato
eppure stabilire un collegamento ad un database sql server 2005
non credevo fosse così complicato.
qual'è la stringa da usare ?
Grazie sempre per la Vostra professionalità
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mer 16 ago 2006 - 10:46
>La stringa proposta non funziona.
Non funziona perché il database probabilmente non è collegato all'istanza.
Lascia perdere per un momento il tuo client C# e prova ad eseguire una query da SQL Server Management Studio in modo da capire in modo più preciso il problema.
>Inoltre ho provato a non spostare nessun database ma a crearlo
>nuovamente
Nel primo post hai scritto:
"ho creato un database test.mdf con VS 2005 contenente una tabella sola e 2 record.
ho copiato il database test.mdf, che avevo creato per un'altra applicazione, nella direcory
C:\Documents and Settings\Administrator\Documenti\Visual Studio 2005\Projects\database\database"
Ora invece che hai fatto?
Hai creato un nuovo database? In che modo?
Stai tentando di connetterti dal medesimo PC oppure da remoto?
>eppure stabilire un collegamento ad un database sql server 2005
>
>non credevo fosse così complicato.
Se non si conosce la teoria che ci sta dietro, tutto diventa difficile...
>qual'è la stringa da usare ?
Su questo sito trovi tutte le stringhe di connessione:
http://www.connectionstrings.com/
Il mio suggerimento è quello di dedicare del tempo a leggere le parti salienti dei Books Online, in modo da capire cos'è e come funziona SQL Server piuttosto che provare "a casaccio" le stringhe di connessione proposte.
>Grazie sempre per la Vostra professionalità
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !