25. september 2003 - 16:15
Der er
12 kommentarer og 1 løsning
Konvertere databaser
Hej Normalt forbinder man til en specifik database. Er det muligt at liste alle databaser på en server? Jeg vil gerne lave et program hvor man får listet alle databaser på serveren, vælge en database/tabel, og få eksporteret indhold ud i XML. Er det muligt?
Annonceindlæg tema
25. september 2003 - 16:19
#1
Nej. Men du kan normalt få listet alle databaser på samme database server. Eksempler: * du har ikke en chance for at finde ud af om jeg har konfiguereret en SQLServer til at køre på port 14033 * det er muligt at få listet alle databaser der er på en SQLServer som kører normalt på port 1433.
25. september 2003 - 16:23
#2
Det er præcis det jeg prøvede at beskrive :o) Jeg vil gerne have listet alle databaser på samme database server. Jeg kender allerede porten, så det er ikke noget problem. Spørgsmålet er så, hvordan kan jeg få databaserne listet? Nogle gode links eller hints?
25. september 2003 - 16:27
#3
En måde er: * connect til master databasen * kald stored procedure sp_databases Den vil liste alle database. Der er muligvis også andre måder at gøre det på.
25. september 2003 - 16:30
#4
Tak for hjælpen arne_v :o)
25. september 2003 - 16:44
#5
Du har sikkert allerede lavet koden. Men hvis ikke så er her lidt C#: using System; using System.Data; using System.Data.SqlClient; class MainClass { public static void Main(string[] args) { SqlConnection con = new SqlConnection("server=ARNEPC2;Integrated Security=SSPI;database=master"); con.Open(); SqlCommand cmd = new SqlCommand("sp_databases", con); cmd.CommandType = CommandType.StoredProcedure; SqlDataReader rdr = cmd.ExecuteReader(); while(rdr.Read()) { string tblnam = (string)rdr[0]; Console.WriteLine(tblnam); } con.Close(); } }
25. september 2003 - 17:35
#6
Jep, har allerede fået det op at køre, men tak alligevel :o) Dog er jeg rendt ind i et lille problem. Er det ikke muligt at frasortere alle system-tabeller, så kun mine egne tabeller bliver listet?
25. september 2003 - 17:40
#7
Så skal parameteren TABLE_TYPE i sp_tables sættes til 'TABLE' - så får du kun dine egne tabeller :-)
25. september 2003 - 18:22
#8
Tak for hjælpen nielslbeck... men når jeg sætter table_type til table, så får jeg ingen resultater. Jeg gør følgende: SqlConnection myConnection = new SqlConnection(source); myConnection.Open(); SqlCommand cmd = new SqlCommand(@"dbo.sp_tables", myConnection); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add("@table_type", SqlDbType.VarChar).Value = "TABLE"; SqlDataReader dr = cmd.ExecuteReader(); while(dr.Read()) TableListbox.Items.Add(dr["TABLE_NAME"].ToString()); dr.Close(); myConnection.Close();
25. september 2003 - 18:24
#9
cmd.Parameters.Add("@table_type", "'TABLE'");;
25. september 2003 - 18:24
#10
Yeps, det lyder nok lidt sjovt, men de to "'"'er skal være med, dvs at du skal skrive: cmd.Parameters.Add("@table_type", SqlDbType.VarChar).Value = "'TABLE'"; vil jeg da mene... Når jeg udfører den direkte skriver jeg i hvert fald: EXEC sp_tables @TABLE_TYPE = "'TABLE'"
25. september 2003 - 18:25
#11
Det her komplette eksempel kører hos mig: using System; using System.Data; using System.Data.SqlClient; class MainClass { public static void Main(string[] args) { SqlConnection con = new SqlConnection("server=ARNEPC2;Integrated Security=SSPI;database=master"); con.Open(); SqlCommand cmd = new SqlCommand("sp_databases", con); cmd.CommandType = CommandType.StoredProcedure; SqlDataReader rdr = cmd.ExecuteReader(); while(rdr.Read()) { string dbnam = (string)rdr[0]; Console.WriteLine("Database=" + dbnam); SqlConnection con2 = new SqlConnection("server=ARNEPC2;Integrated Security=SSPI;database=" + dbnam); con2.Open(); SqlCommand cmd2 = new SqlCommand("sp_tables", con2); cmd2.CommandType = CommandType.StoredProcedure; cmd2.Parameters.Add("@table_type", "'TABLE'"); SqlDataReader rdr2 = cmd2.ExecuteReader(); while(rdr2.Read()) { string tblnam = (string)rdr2[2]; Console.WriteLine(dbnam + " " + tblnam); } con2.Close(); } con.Close(); } }
25. september 2003 - 18:25
#12
[jeg burde nok ikke lave en connection per database, men ...]
25. september 2003 - 18:30
#13
HELT PERFEKT! Nu kører det som det skal... tak for hjælpen!
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.