Gå til innhold

SQL Server Management Object


Anbefalte innlegg

Jeg bruker Visual C# 2005 Express og MS SQL Server 2005 Express.

 

Nå trenger jeg å opprette nye tabeller programmatisk og har funnet ut at jeg skal bruke SMO. Jeg sliter med å finne ut hvilke namespaces jeg skal bruke, men har tror det skal være Microsoft.SqlServer.Management.Smo. Men jeg får feilmeldinger.

 

using Microsoft.SqlServer.Management.Smo;

..............

private void opprettDutyTable(int DutyID)
       {

           // Establish the database server
           SqlConnection connection =
                new SqlConnection(connString);
           Server server =
                new Server(new ServerConnection(connection));

           // Create table in my personal database
           Database db = server.Databases["MyDatabase"];

           // Create new table, called TestTable
           string tableName = "Duty" + EmployID.ToString();
           Table newTable = new Table(db, tableName);

           // Add "DutyID" Column, which will be PK
           Column idColumn = new Column(newTable, "DutyID");
           idColumn.DataType = DataType.Int;
           idColumn.Nullable = false;
           idColumn.Identity = true;
           idColumn.IdentitySeed = 1;
           idColumn.IdentityIncrement = 1;

           // Add "Title" Column
           Column titleColumn = new Column(newTable, "Title");
           titleColumn.Datatype = datatype.Int;
           // titleColumn.DataType = DataType.VarChar(50);
           titleColumn.Nullable = false;

           // Add Columns to Table Object
           newTable.Columns.Add(idColumn);
           newTable.Columns.Add(titleColumn);

           // Create a PK Index for the table
           Index index = new Index(newTable, "PK_TestTable");
           index.IndexKeyType = IndexKeyType.DriPrimaryKey;

           // The PK index will consist of 1 column, "DutyID"
           index.IndexedColumns.Add(new IndexedColumn(index, "DutyID"));

           // Add the new index to the table.
           newTable.Indexes.Add(index);

           // Physically create the table in the database
           newTable.Create();

       }

 

Jeg får følgende feilmeldinger:

 

The type or namespace name 'ServerConnection' could not be found (are you missing a using directive or an assembly reference?)

The best overloaded method match for 'Microsoft.SqlServer.Management.Smo.Server.Server(string)' has some invalid arguments

Argument '1': cannot convert from 'ServerConnection' to 'string'

'Microsoft.SqlServer.Management.Smo.Column' does not contain a definition for 'Datatype'

The name 'datatype' does not exist in the current context

 

Jeg har lagt til følgende referanser:

Microsoft.SqlServer.ConnectionInfo

Microsoft.SqlServer.Smo

Microsoft.SqlServer.SmoEnum

Microsoft.SqlServer.SqlEnum

 

Noen forslag til hva jeg kan gjøre?

Lenke til kommentar
Videoannonse
Annonse

'Microsoft.SqlServer.Management.Smo.Server.Server(string)' has some invalid arguments

Argument '1': cannot convert from 'ServerConnection' to 'string':

 

Server server = new Server("localhost","user","pass");

eller

Server server = new Server("localhost");

 

 

 

 

Microsoft.SqlServer.Management.Smo.Column' does not contain a definition for 'Datatype'

The name 'datatype' does not exist in the current context

 

Datatype skrives DataType i C#. Bruker du ikke VS.Net? CTRL+SPACE? :-P

 

 

 

Uansett så ville jeg kanskje foretrukket en valig CREATE TABLE statement for så enkle ting. Ville nok vært mindre kode også...

Lenke til kommentar
Uansett så ville jeg kanskje foretrukket en valig CREATE TABLE statement for så enkle ting. Ville nok vært mindre kode også...

 

Selvfølgelig! Skal heller gjøre det slik. Rart med det når man Googler noe og havner inne på et spor man egentlig ikke hadde planlagt...

Lenke til kommentar
Uansett så ville jeg kanskje foretrukket en valig CREATE TABLE statement for så enkle ting. Ville nok vært mindre kode også...

 

Selvfølgelig! Skal heller gjøre det slik. Rart med det når man Googler noe og havner inne på et spor man egentlig ikke hadde planlagt...

7173658[/snapback]

 

Ikke missforstå meg, SMO er genialt, men brukes helst til mer avanserte ting. :)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...