---
title: "Starta SQL Server via kod"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/94455-starta-sql-server-via-kod"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "saw"
published: "2004-01-10T12:51:41.000Z"
updated: "2004-01-10T15:58:35.000Z"
replies: 11
views: 322
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/94455-starta-sql-server-via-kod"
---

# Starta SQL Server via kod

## #1 — saw, 2004-01-10T12:51Z

Jag försöker att (om inte SQL Servern är igång) starta upp den via kod.

```
public System.Diagnostics.Process p = new System.Diagnostics.Process();

p.StartInfo.CreateNoWindow = true;	p = System.Diagnostics.Process.Start("MSSQL$SAWDATA");
```

Jag får felet:
SQL Servern saknas eller återkomst nekad".

Jag har också försökt så här:

```
string command = "net start MSSQL$SAWDATA";
```

med samma resultat. Nägra förslag?

Permalänk: https://www.webforum.nu/p/94455

## #2 — niko, 2004-01-10T13:14Z

```
System.ServiceProcess.ServiceController s = new System.ServiceProcess.ServiceController();
s.MachineName = "datornamn"; s.ServiceName = "MSSQLSERVER";
try {
            if (s.Status.ToString() != "Running") {
                s.Start();
            }
 }
catch(Win32Exception myEx)  {
            //Gör nåt.
 }
```

Lägg också till en referens till *System.ServiceProcess.dll* under Project-\>Add Reference. Sen vet jag inte riktigt vad MSSQL$SAWDATA betyder. Är det nån "named instance"?

Permalänk: https://www.webforum.nu/p/1246800

## #3 — saw, 2004-01-10T13:34Z

Hej Niko och tack för ett snabbt svar. Jag skall genast testa detta.
När jag installerade min SQL Server så fick den det namnet.
Om jag går in på tjänster i administrationsverktyg så heter den MSSQL$SAWDATA .
Om jag går ut via dospromten så kan jag starta/stoppa med net start MSSQL$SAWDATA .

Permalänk: https://www.webforum.nu/p/1246810

## #4 — saw, 2004-01-10T13:42Z

Jag fick problem med en gång...

```
System.ServiceProcess.ServiceController
```

E:\\MeraTest\\Test\\Form1.cs(179): The type or namespace name 'ServiceProcess' does not exist in the class or namespace 'System' (are you missing an assembly reference?)

Är det någon referens som jag har missat?

Permalänk: https://www.webforum.nu/p/1246815

## #5 — niko, 2004-01-10T13:45Z

Ja .. Länkar du mot *System.ServiceProcess.dll* som jag skrev ovan?

Permalänk: https://www.webforum.nu/p/1246819

## #6 — saw, 2004-01-10T14:01Z

Jag missade den, sorry.
Det blev inte så lätt ialla fall, jag får ett error:

```
Objectreferensen har inte angets till en instans av ett object.
```

Jag vet nog inte vad jag skall göra åt det...

Permalänk: https://www.webforum.nu/p/1246824

## #7 — niko, 2004-01-10T14:09Z

Kör du exakt koden ovan (förutom dator- och servicenamn)? Det låter inte som om du skulle kunna få det felet isåf?

Permalänk: https://www.webforum.nu/p/1246827

## #8 — saw, 2004-01-10T14:34Z

Så här ser det ut nu:

```
using System.ServiceProcess;

System.ServiceProcess.ServiceController s = new System.ServiceProcess.ServiceController();
				
s.MachineName = "sawdata."; s.ServiceName = "MSSQL$SAWDATA";
				
try 
				
{
					
if (s.Status.ToString() != "Running") 
					
{
						
s.Start();
						
string CONstring = "Data Source=SAWDATA\\SAWDATA; Initial Catalog=Melodi;Trusted_Connection=yes"; 
						
con = new SqlConnection(CONstring); 
						
this.Text="Connectad till: " + con;
					
}
				
}
				
catch(Win32Exception myEx)  
				
{
					
MessageBox.Show(myEx.Message,"Här blev det fel",MessageBoxButtons.OK,MessageBoxIcon.Error);
				
}
```

Jag hittade felet, det var att jag försökte att använda mig av connections.
Nu får jag inga fel, men ingenting görs...

Permalänk: https://www.webforum.nu/p/1246841

## #9 — niko, 2004-01-10T15:00Z

Ja, alltså anropet till *Start* är asynkront vilket innebär att du inte kan använda SQL-servern redan på nästa rad.

```
s.Start();
s.WaitForStatus(System.ServiceProcess.ServiceControllerStatus.Running);
string CONstring = ..
```

(Egentligen bör du ha nån time-out så att inte programmet hänger sig om starten misslyckas.)

Annars kan jag inte se nåt fel. Samma kod funkar hos mig. Och du verkar ju inte komma in i catch-blocket?

/red:

Prova ändra if-satsen till:

```
if (s.Status != System.ServiceProcess.ServiceControllerStatus.Running)
```

Det slog mig just att min första variant kanske funkar hos mig för att jag råkar köra *engelsk* 2000?

Permalänk: https://www.webforum.nu/p/1246849

## #10 — saw, 2004-01-10T15:27Z

Felet är att jag aldrig kommer in i if-satsen.
Mycket märkvärdigt...

Permalänk: https://www.webforum.nu/p/1246861

## #11 — niko, 2004-01-10T15:35Z

> Felet är att jag aldrig kommer in i if-satsen.

Ja, men det kan ju bara betyda att den redan är igång? Du såg min redigering väl?

Permalänk: https://www.webforum.nu/p/1246864

## #12 — saw, 2004-01-10T15:58Z

Nej jag gjorde inte det, men nu.
Och nu fungerar det, tack niko.

Permalänk: https://www.webforum.nu/p/1246876

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/94455-starta-sql-server-via-kod
