Avatar billede hlt Juniormester
16. september 2009 - 10:57 Der er 17 kommentarer og
1 løsning

Kan ikke ændre kolonne i tabel

hej,
Jeg har en database som kører på en MS SQL express. Og i den database er der en tabel med en kolonne som jeg gerne vil ændre navn samt type, men det kan jeg ikke få lov til. Jeg får denne fejl:
Error:  The object 'DF_elementData_insuranceCompany' is dependent on column 'insuranceCompanyId'. ALTER TABLE DROP COLUMN itemlocation failed because one or more objects access this column.
Source:  .Net SqlClient Data Provider

Jeg kan ikke finde det 'DF_elementData_insuranceCompany' som fejlmeddelelsen skriver der skulle være. Og det er ikke noget som jeg har lavet på databasen.
Felterne er tomme og bliver ikke brugt til noget i systemet, og derfor skal de fjernes.
Er der nogen der har prøvet noget tilsvarende og ved hvad man kan gøre.
Jeg har prøvet at hente databasen ned lokalt på min maskine, og der kunne jeg sagtens ændre det der skulle ændres, men så snart jeg lagde den op igen på serveren fejlede den med beskeden om at brugeren ikke kunne logge ind.
Mvh
henrik
Avatar billede Slettet bruger
16. september 2009 - 13:24 #1
Har du prøvet at højreklikke på tabellen i Management Studio og vælge 'View dependencies'? Det kan måske give et indtryk af hvor den går galt.

Eller måske kan du bruge http://www.winfrastructure.net/article.aspx?BlogEntry=Problem-altering-tables-in-SQL-Server-2008
Avatar billede hlt Juniormester
16. september 2009 - 14:36 #2
Jeg bruger asp.net enterprise manager til at redigere min database.
Hvis jeg forsøger at redigere i databasen lokalt i Visual Web developer express kan jeg godt dette, men så kan jeg ikke åbne databasen når jeg lægger den op på serveren. Så får jeg en fejl med at brugeren ikke kan åbne databasen.
Avatar billede Slettet bruger
16. september 2009 - 14:41 #3
Hvis du ikke kan åbne databasen efter at have ændret kan det måske hænge sammen med at permissions er blevet sat til sa?
Højreklik på databasen/tabelen og skift owner til din web-bruger...
Avatar billede hlt Juniormester
16. september 2009 - 15:57 #4
jeg ved ikke om det er fordi jeg bruger Visual web developer express, men jeg kan ikke få lov til at ændre owner på databasen.
og nu har jeg lige downloadet en "frisk" kopi. men når jeg åbner den igennem vwd så står owner til at være min lokale bruger. kan det virkelig være derfor at den pr. automatik bliver ændret når jeg åbner den lokalt. Jeg har ingen poblemer med at ændre det der skal ændres når den åbnes lokalt. men som skrevet så kan den så ikke åbnes på serveren af web applikationen. og jeg kan ikke få lov til at ændre den på serveren igennem asp enterprice manager, fordi der er et eller andet object, som jeg ikke kan finde, som har en dependency på den kolonne jeg forsøger at slette.
Jeg forstår ingenting
Avatar billede Slettet bruger
16. september 2009 - 16:06 #5
Kan kun anbefale 'Microsoft SQL Server Management Studio Express', som kan downloades her http://www.microsoft.com/downloadS/details.aspx?familyid=C243A5AE-4BD1-4E3D-94B8-5A0F62BF7796&displaylang=en

Den kan også hentes sammen med selv SQL server 2008 her http://www.microsoft.com/express/sql/download/

Jeg har ingen erfaringer med at administrere sql server gennem Visual Studio, men på den anden måde tror jeg man får bedre overblik og nemmere kan fejlfinde...
Avatar billede hlt Juniormester
16. september 2009 - 16:11 #6
Ok, jeg prøver lige at se på det. Jeg håber det er noget jeg kan fikse ude at smadre databasen. Er lidt bekymret da det er en "live" database jeg sidder og roder med.
Avatar billede Slettet bruger
16. september 2009 - 18:08 #7
Du kan sagtens forbinde til din 'live' database på nettet og arbejde med denne gennem Management Studio Express.

Men det ville selvfølgelig være en fordel at lave en kopi lokalt og så rodde lidt rundt med den før du laver numre på den rigtige database :-)
Avatar billede hlt Juniormester
17. september 2009 - 13:06 #8
Hej igen.
Så lykkedes det endelig at få installeret SQL manager. Og her kunne jeg også sagtens se den constrain som er skyld i det hele. eller det vil sige næsten det hele. For jeg har fået lov til at slette et felt i tabellen, men jeg kan ikke få lov til at oprette et nyt.
Jeg har prøvet at lave ejerskabet om for tabellen, men der sker intet. Den ændrer ikke på ejeskabet. Har du nogen ideer?

Ved du forresten hvordan jeg forbinder til min "Live" database?
Avatar billede Slettet bruger
17. september 2009 - 13:35 #9
Med hensyn til forbindelsen til databasen, så er connectionstring selvfølgelig afhængig af den specifikke udbyder. Du skal kontakte din webhotel-udbyder for at få oplyst stien til databasen og brugernavn og password for din bruger på database-serveren.

Hvad får du af fejl når du forsøger at ændre på tabellerne?
Hvis du kører med SQL Server 2008, så kan der være tale om at du skal ind og sætte et flag, der tillader ændringer på tabellerne - som standard tillades dette ikke.
Se evt. http://www.winfrastructure.net/article.aspx?BlogEntry=Problem-altering-tables-in-SQL-Server-2008
Avatar billede hlt Juniormester
17. september 2009 - 14:54 #10
Jeg får ingen fejl. Der bliver bare ikke ændret noget.
Jeg har læst din artikel, men problemet er at jeg kan ikke sætte det flag på databasen på serveren. Jeg har ingen problemer med at ændre det lokalt, men når jeg lægger det op på serveren, har brugeren ikke længere adgang.
Avatar billede Slettet bruger
17. september 2009 - 15:11 #11
Hvordan plejede du at arbejde med databasen før du installerede SQL Management Studio?

Du skrev noget om at du plejede at uploade databasen hver gang?

Hvis du forbinder direkte til databasen fra din SQL Management Studio, så burde du have disse muligheder. Er der tale om en SQL Server 2008? Og hvor har du databasen hosted?
Avatar billede hlt Juniormester
17. september 2009 - 15:33 #12
Jeg plejer at bruge asp.net enterprise manager. Og den har sådan set virket fint, indtil nu hvor jeg er stødt ind i den problemer.
Nu har jeg lige prøvet at lave ændringerne lokalt, og derefter lægge den online. Det har jeg jep prøvet før, og fik en fejl om brugeren ikke fik adgang til databasen. Nu forsøgte jeg så at oprette en ny bruger til databasen, men fik så en fejl om at der ikke kunne oprettes en bruger enten pga ødelagte filer eller manglende hukummelse.
Jeg begynder godt nok at blive lidt irriteret.
Jeg forbinder ikke direkte til databaen. Jeg har hentet en kopi ned lokalt. Lavet ændringerne og lagt den op igen.
jeg hoster selv min webserver og det er en express edition med dette versionsnr: 10.0.1442.32 hvis det siger dig noget.
Avatar billede Slettet bruger
17. september 2009 - 15:48 #13
Ok, hvis du selv hoster databasen på din egen server så er det jo en del nemmere. Det ER forøvrigt 2008 du kører.

Når du starter Management Studio op, bliver du bedt om nogle oplysninger til at forbinde til databasen.

Server Type skal være Database Engine

Servername skal være fx. SERVERNAVN\SQLEXPRESS

Authentication ville jeg sætte til SQL Server Authentication (tror jeg også den er sat til da du jo skal tilgå den fra dine .net sider)

Login vil være en bruger du har oprettet eller 'sa', som er standard admin på database-serveren.

Password, ja det kender du jo...

Når du er logget ind på SQL server 2008, så kan du attache en eksisterende database via Management Studio.
Højreklik på 'Databases' og vælg 'Attach'. Specifier stien til databasen - lig den gerne i default location for nemheds skyld.
Mener det er C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data

Når den er attached, så kan du sætte permissions og owner på tabellerne/databasen ved at højreklikke på den i venstre side og vælge 'Properties/Files'. Under 'Owner' kan du specificere ejeren af databasen til den lokale SQL Server bruger du har oprettet på database-serveren. Du kan også benytte 'sa', så længe at du benytter dette login i din connectionstring i din kode på dine .net sider.

Tjek for en sikkerheds skyld også at du har gjort ligesom i den artikel jeg har sendt dig et link til - altså sådan at databasen rent faktisk tillader at droppe tabeller og oprette dem igen i tilfælde af at du foretager ændringer af den egentlige tabelstruktur.

Du burde være klar efter dette.
Avatar billede hlt Juniormester
17. september 2009 - 16:00 #14
Jeg glemte vist at sige at serveren er hostet i et hosting center. Altså ikke på mit eget netværk.
Avatar billede hlt Juniormester
17. september 2009 - 16:06 #15
Det kan være at jeg skal installere programmet på min server og køre det derfra.
Avatar billede hlt Juniormester
17. september 2009 - 18:02 #16
Ved du om kan lade sig gøre at køre installationen? Jeg er lidt bange for at jeg får lavet rod i serveren. Jeg tænker bare at hvis der er en installation af SQL serveren så installerer den vel ikke en oveni?
Avatar billede hlt Juniormester
22. september 2009 - 17:02 #17
tror bare jeg at jeg vil forsøge at oprette en ny tabel, overføre det data der nu er i den gamle tabel og så slette den gamle når jeg har gjort det. Jeg gider ikke rigtig rode mere med det. Det ser ikke ud til at jeg kan fikse det rettigheds problem.
men send et svar, så du kan få point.
Avatar billede hlt Juniormester
08. december 2009 - 13:36 #18
Lukker
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
Kategori
Computerworld tilbyder specialiserede kurser i database-management

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