Avatar billede flash1 Nybegynder
04. juni 2008 - 14:53 Der er 9 kommentarer og
2 løsninger

Opret tom database og dertil hørende user i sql server express

- Skal i c# oprette en tom database på en sql server 2005 express.

- Derefter skal der oprettes en bruger på sql serveren ud fra en allerede eksisterende active directory bruger.

- Brugeren skal have adgang til den tomme database.


Kan dette laves i LINQ eller på en anden måde?



Eller som sidste ud vej - Kan jeg så få understående "kørt" som en query?

CREATE DATABASE Test;
GO
USE Master
GO
CREATE LOGIN [GRATIS\TEST] FROM WINDOWS WITH DEFAULT_DATABASE=[Test];
GO
USE [Test]
GO
EXEC sp_addrolemember N'db_owner', [GRATIS\test]
GO
EXEC sp_addrolemember N'db_datareader', [GRATIS\test]
GO
EXEC sp_addrolemember N'db_datawriter', [GRATIS\test]
GO
Avatar billede aaberg Nybegynder
04. juni 2008 - 15:16 #1
Tilføj følgende referencer:
Microsoft.SqlServer.ConnectionInfo.dll
Microsoft.SqlServer.Smo.dll


tilføj følgende usings:
using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Common;


følgende kode kører dit script på serveren:

string script = "CREATE DATABASE Test;
                GO
                USE Master
                GO  osv... Load eventuelt dette fra en fil eller embedded resource!";

SqlConnection conn = new SqlConnection("connectionstring");
Server server = new Server(new ServerConnection(conn));
server.ConnectionContext.ExecuteNonQuery(script);
Avatar billede arne_v Ekspert
04. juni 2008 - 15:19 #2
Det kan ikke laves med LINQ.

Det kan laves med helt normal SQL.

Det boer ikke engang vaere noedvendig at bruge Microsoft.SqlServer stuff.

Helt normal SqlConnection som connecter til master databasen med et brugernavn
med administrator privs, en helt normal SqlCommand og bare ExecuteNoNQuery paa den.
Avatar billede aaberg Nybegynder
04. juni 2008 - 15:52 #3
Så vidt jeg husker kan du ikke bruge SqlCommand til at køre scripts som indholder GO. Det er dog muligt jeg husker forkert! :-)
Avatar billede flash1 Nybegynder
04. juni 2008 - 15:54 #4
Ja, det var også det som jeg faldt over. At alle go blev fjernet.

Tester om ikke sålænge.

men tak indtil videre.
Avatar billede arne_v Ekspert
04. juni 2008 - 17:18 #5
Nej. Men man kan enten bruge semikolon. Eller bare lave en ExecuteNonQuery per
"go del".
Avatar billede flash1 Nybegynder
05. juni 2008 - 12:00 #6
Det virkede fint med ';' istedet for GO.

Så siger mange tak. I må lige ligge et svar.
Avatar billede flash1 Nybegynder
05. juni 2008 - 12:05 #7
Et tillægsspørgsmål hvis I gider.

Login, Database og rettigheder bliver sat fint med scriptet, men Login virker bare ikke. Får en login failed (lige meget om det er en bruger fra AD eller en lokal bruger).

Det virker fint, hvis jeg opretter en databasebruger, som ikke er integreret med windows/ad.
Avatar billede aaberg Nybegynder
05. juni 2008 - 12:48 #8
Kan du logge på med andre Windows brugere på GRATIS domænet?

Nu ligger jeg et svar. Men hvis du synes at arne_v skal have alle pointene da det er hans løsning du bruger, er det helt i orden. :-)
Avatar billede arne_v Ekspert
05. juni 2008 - 15:21 #9
Du skal jo have oprettet baade et login til server og en user til database. Har du oprettet
det sidste ogsaa ?

Og et svar fra mig.
Avatar billede flash1 Nybegynder
06. juni 2008 - 09:16 #10
Har ikke prøvet med andre brugere, men går ud fra at det er det samme.

Ja. der er både et login og en user under den database, som de er tilknyttet.
Avatar billede flash1 Nybegynder
06. juni 2008 - 09:19 #11
Får en "Error: 18456" "state 6" ved login - State 6 er: login fra Windows/domain konto.

AD brugere er oprettet som 'normal' user. Kan det være fordi brugeren skal tilføjes nogle bestemte rettigheder.


aaberg80: synes også, at du skulle have lidt point for den hurtigere respons.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester