SQL Server Management Studio - tips for å forbedre TSQL koding prosessen

stemmer
42

Jeg pleide å jobbe på et sted hvor en vanlig praksis var å bruke Pair Programming. Jeg husker hvor mange små ting vi kan lære av hverandre når de jobber sammen på koden. Plukke opp nye snarveier, kodesnutter osv med tiden forbedret vår effektivitet skrive kode betydelig.

Siden jeg begynte å jobbe med SQL Server jeg har stått på min egen. De beste vaner jeg normalt ville plukke fra å jobbe sammen med andre mennesker som jeg ikke kan gjøre nå.

Så her er spørsmålet:

  • Hva er du tips om effektivt å skrive TSQL koden ved hjelp av SQL Server Management Studio?
  • Vennligst hold tipsene til 2 - 3 ting / snarveier som du tror du forbedre hastigheten på koding
  • Vennligst hold deg innenfor rammen av TSQL og SQL Server Management Studio 2005/2008 Hvis funksjonen er spesifikk for den versjonen av Management Studio vennligst oppgi: f.eks “Fungerer med SQL Server 2008.

REDIGERE:

Jeg er redd for at jeg kunne ha blitt misforstått av noen av dere. Jeg er ikke ute etter tips for å skrive effektive TSQL kode, men heller for å få råd om hvordan du effektivt bruke Management Studio for å fremskynde koding prosessen selv.

Den type svar som jeg leter etter er:

  • bruke maler,
  • tastatursnarveier,
  • Bruken av IntelliSense plugg etc.

I utgangspunktet de små tingene som gjør koding oppleve litt mer effektiv og behagelig.

Publisert på 19/09/2008 klokken 08:56
kilden bruker
På andre språk...                            


30 svar

stemmer
27

Ta en titt på Red Gate SQL Prompt - det er et flott produkt (som er de fleste av Red Gate bidrag)

SQL Informer er også en stor gratis (online) verktøy for formatering lange prosedyrer som noen ganger kan få ut av hånden.

Bortsett fra det, har jeg lært av smertefull erfaring er det en god ting å gå foran enhver DELETE uttalelse med en BEGIN TRANSACTION . Når du er sikker på kontoutskriften sletter bare hva det skal, kan du da COMMIT.

Reddet meg på en rekke anledninger ;-)

Svarte 19/09/2008 kl. 08:58
kilden bruker

stemmer
2

Jeg foreslår at du oppretter standarder for SQL skripting og hold deg til dem. Også bruke maler til å lage ulike typer av lagrede prosedyrer og funksjoner. Her er et spørsmål om maler i SQL Server 2005 Management Studio

Hvordan skaper du SQL Server 2005 lagret prosedyre maler i SQL Server 2005 Management Studio?

Svarte 19/09/2008 kl. 09:03
kilden bruker

stemmer
8

Prøv å alltid bruke den minste datatype som du kan og indeksere alle feltene mest brukt i spørringer.

Prøv å unngå server side pekere så mye som mulig. Alltid holde seg til en 'set-tilnærming' i stedet for en prosessuell tilnærming "for å få tilgang til og manipulere data. Pekere kan ofte unngås ved å bruke SELECT-setninger i stedet.

Bruk alltid den grafiske gjennomføringsplan i Query Analyzer eller SHOWPLAN_TEXT eller SHOWPLAN_ALL kommandoer for å analysere dine spørsmål. Sørg for at dine spørsmål trenger en "Index søke" i stedet for en "Index scan" eller en "Table scan." En tabell scan eller en indeks skanning er en svært dårlig ting, og bør unngås der det er mulig. Velg riktig indeksene på de riktige kolonnene. Bruk mer lesbar ANSI-standard Bli med klausuler i stedet for den gamle stilen tiltrer. Med ANSI tiltrer, er WHERE klausulen brukes kun for filtrering av data. Der som med eldre stil tiltrer, WHERE klausulen håndterer både delta tilstand og filtrering av data.

Ikke la din front-end applikasjoner spørring / manipulere dataene direkte med SELECT eller INSERT / UPDATE / DELETE-setninger. I stedet oppretter lagrede prosedyrer, og la dine applikasjoner tilgang til disse lagrede prosedyrer. Dette holder datatilgang rent og konsekvent på tvers av alle modulene i programmet, og på samme tid å sentralisere forretningslogikk i databasen.

Snakker om lagrede prosedyrer, ikke prefiks dine lagrede prosedyren navn med "sp_". Prefikset sp_ er reservert for system lagret prosedyre som leveres med SQL Server. Når SQL Server møter en prosedyre navn som starter med sp_, først prøver den å finne prosedyren i master databasen, så det ser ut for eventuelle kvalifiseringskamper (database, eieren) gitt, så den prøver dbo som eier. Så du kan egentlig spare tid på å finne den lagrede prosedyren ved å unngå "sp_" prefiks.

Unngå dynamiske SQL-setninger så mye som mulig. Dynamisk SQL tendens til å være tregere enn statisk SQL, SQL Server må generere en gjennomføringsplan hver gang under kjøring.

Når er mulig, prøv å bruke integrert autentisering. Det betyr, glem om SA og andre SQL-brukere, bruker microsoft brukerklargjøring infra-struktur og holder alltid SQL server, up-to-date med alle nødvendige patcher. Microsoft gjør en god jobb med å utvikle, teste og slippe patcher, men det er din jobb å bruke den.

Søk på amazon.com bøker med gode vurderinger om det og kjøpe det!

Svarte 19/09/2008 kl. 09:47
kilden bruker

stemmer
1

Benytt deg av TRY / CATCH funksjonalitet for feil fange.

Adam Machanic ekspert SQL Server 2005 Programming er en stor ressurs for solide teknikker og praksis.

Bruk eierskap kjeding for lagrede procs.

Benytt deg av skjemaer for å håndheve datasikkerhet og roller.

Svarte 19/09/2008 kl. 10:42
kilden bruker

stemmer
13

Min favoritt rask tips er at når du utvider et bord navn i objektet explorer, bare dra ordet colums til søket skjermen vil sette en liste over alle kolonnene i tabellen i spørringen. Mye lettere å bare slette de du ikke ønsker enn å skrive de du ønsker, og det er så lett, det hindrer folk fra å bruke helt forferdelig velger * syntaks. Og det hindrer skrivefeil. Selvfølgelig kan du individuelt dra kolonner også.

Svarte 19/09/2008 kl. 12:16
kilden bruker

stemmer
4

En annen ting som bidrar til å forbedre nøyaktigheten av det jeg gjør er egentlig ikke en ledelse studio tips men en anvendelse av t-sql selv.

Når jeg skriver en oppdatering eller slette statement for første gang, jeg innlemme en utvalgt inn i den slik at jeg kan se hva poster vil bli berørt.

eksempler:

select t1.field1,t2.field2
--update t
--set field1 = t2.field2 
from  mytable t1
join myothertable t2 on t1.idfield =t2.idfield
where t2.field1 >10

select t1.* 
--delete t1
from mytable t1
join myothertable t2 on t1.idfield =t2.idfield
where t2.field1 = 'test'

(Merk jeg brukte velge * her bare for illustrasjon, ville jeg normalt bare velge noen felt jeg trenger å se at spørringen er riktig. Noen ganger kan jeg trenger å se felt fra de andre bordene inthe delta samt postene jeg har tenkt å slett å sørge for at bli jobbet slik jeg trodde det ville)

Når du kjører denne koden, kan du kjøre velger først å sikre at det er riktig, så kommentere velger linjen (e) ut og uncomment slette eller oppdatere deler. Ved å gjøre det på denne måten, trenger du ikke ved et uhell kjører på slett eller oppdatere før du har sjekket det. Også du unngå problemet med å glemme å kommentere ut velger forårsaker oppdateringen for å oppdatere alle poster i databasen tabell som kan oppstå hvis du bruker denne syntaksen og uncomment velger å kjøre den:

select t1.field1,t2.field2
update t
set field1 = t2.field2 
--select t1.field1,t2.field2
from  mytable t1
join myothertable t2 on t1.idfield =t2.idfield
where t2.field1 >10

Som du kan se fra eksempelet ovenfor, hvis du uncomment select og glemmer å gjen kommentere den ut, oops du nettopp oppdatert hele tabellen, og deretter kjørte en velger når du tenkt å bare kjøre oppdateringen. Noen bare gjorde det på kontoret mitt denne uken gjør det så bare en person av alle ut kunder kan logge seg på klienten nettsteder. Så unngå å gjøre dette.

Svarte 19/09/2008 kl. 12:33
kilden bruker

stemmer
24

samfunnet eide wiki Svar - gjerne til å redigere eller legge til kommentarer:

Tastatursnarveier

  • F5, CTRL+ EEller ALT+ X- utføre gjeldende valgte TSQL kode
  • CTRL+ R- vise / skjule Resultater-ruten
  • CTRL+ N- Open New Query Window
  • CTRL+ L- Display spørringen kjøres plan

Redigere snarveier

  • CTRL+ K+ COg CTRL+ K+ U- kommentar / uncomment valgt kodeblokk (antydet ved unsliced)
  • CTRL+ SHIFT+ UOg CTRL+ SHIFT+ L- endringer utvalgte tekst til store / små bokstaver
  • SHIFT+ ALT+ Velge tekst - velg / klipp / kopier / lim inn en rektangulær tekstblokk

Addons

andre tips

  • Bruke komma prefiks stil (foreslått av Cade Roux)
  • Ved hjelp av tastatur akseleratorer (antydet ved kcrumley)

nyttige lenker

Svarte 19/09/2008 kl. 13:15
kilden bruker

stemmer
19

1 for SQL Tekst.

Noe virkelig enkel at jeg tror jeg aldri hadde sett - som vil jobbe med omtrent alle SQL miljø (og andre språk selv):

Etter 12 år med SQL koding, har jeg nylig blitt en konvertitt til komma prefikset stil etter å ha sett det i noen SSMS generert kode, har jeg funnet det veldig effektivt. Jeg var veldig overrasket over at jeg aldri hadde sett denne stilen før, spesielt siden det har styrket min produktiviteten umåtelig.

SELECT
t.a
,t.b
,t.c
,t.d
FROM t

Det gjør det veldig enkelt å redigere valglister, parameterlister, ordre av lister, gruppe av lister, osv Jeg synes at jeg bruker mye mindre tid på å lure med å legge til og fjerne komma fra slutten av listene etter kutt og-lim-operasjoner - jeg antar det funker lettere fordi du nesten alltid legge ting på slutten, og med postfix komma, som krever at du flytter markøren mer.

Prøv det, vil du bli overrasket - Jeg vet jeg var.

Svarte 19/09/2008 kl. 20:08
kilden bruker

stemmer
5

Tastatur akseleratorer. Når du finne ut hva slags spørsmål du skriver mye, skriver verktøyet lagrede prosedyrer for å automatisere oppgaver, og kartlegge dem til hurtigtaster. For eksempel denne artikkelen snakker om hvordan å unngå å skrive "velge topp 10 * fra SomeBigTable" hver gang du ønsker å bare få en rask titt på eksempeldata fra det bordet. Jeg har en stor utvidet versjon av denne prosedyren, tilordnet CTRL+ 5.
Noen flere jeg har fått:

  1. CTRL+ 0: Raskt script tabellens data, eller en proc, UDF, eller se definisjon
  2. CTRL+ 9: Finne et objekt med navn som inneholder en gitt streng (for når du vet du det er en prosedyre med "Option" i navnet, men du vet ikke hva navnet starter med)
  3. CTRL+ 7: Finne noen proc, UDF eller visning som inneholder en gitt streng i sin kode
  4. CTRL+ 4: Finn alle tabeller som har en kolonne med gitt navn

... og noen flere som ikke kommer til tankene akkurat nå. Noen av disse tingene kan gjøres gjennom eksisterende grensesnitt i SSMS, men SSMer vinduer og widgets kan være litt treg lasting opp, spesielt når du spørring mot en server over internett, og jeg foretrekker ikke å måtte plukke hendene mine opp av tastaturet uansett.

Svarte 22/09/2008 kl. 05:03
kilden bruker

stemmer
1

F5 for å kjøre den aktuelle spørringen er en enkel seier, etter at de generiske MS redaktør kommandoer CTRL+ K+ Ctil å kommentere ut den valgte teksten og deretter CTRL+ K+ Util uncomment.

Svarte 23/09/2008 kl. 05:48
kilden bruker

stemmer
13

Opplyser en enhet i en spørring og trykke ALT+ F1vil kjøre sp_help for det, noe som gir deg en oversikt over noen kolonner, indekser, parametere etc.

Svarte 23/09/2008 kl. 05:57
kilden bruker

stemmer
0

Jeg varmt anbefale Red Gate SQL Tekst. Auto-funn (IntelliSense på tabeller, lagrede prosedyrer, funksjoner og innfødte funksjoner) er intet mindre enn fantastisk! :)

Den kommer med en pris selv. Det er ingen gratis-ware versjon av ting.

Svarte 23/09/2008 kl. 08:22
kilden bruker

stemmer
4

For underspørringer

objekt explorer> høyreklikke på en tabell> Script tabellen som> SELECT til> utklippstavlen

Deretter kan du bare lime i den delen der du vil ha det som en sub spørring.

Maler / Snippets

Lag din egen maler med bare en kodebit. Så i stedet å åpne malen som et nytt dokument bare dra den til deg nåværende spørring for å sette inn tekstutdraget.

En tekstutdrag kan rett og slett være et sett av header med kommentarer eller bare noen enkle stykke kode.

implisitt transaksjoner

Hvis du ikke husker å starte en transaksjon før dine slette statemens du kan gå til alternativer og sette implisitte transaksjoner som standard på alle dine spørsmål. De krever alltid en eksplisitt forplikte / rollback.

isolasjonsnivå

Gå til opsjoner og sette isolasjonsnivået til READ_UNCOMMITED som standard. På denne måten trenger du ikke å skrive en NOLOCK i alle dine ad hoc spørringer. Bare ikke glem å plassere tabellen hint når du skriver en ny visning eller lagret prosedyre.

standard database

påloggingen har en standard database satt av DBA (For meg er vanligvis uønsket man nesten hver gang).

Hvis du vil at det skal være en annen grunn for prosjektet er du for tiden arbeider med.

I 'Registrerte Servere ruten'> Høyreklikk> Egenskaper> Tilkobling egenskaper tab> koble til databasen.

flere pålogginger

(Disse kan du allerede har gjort skjønt)

Sett server flere ganger, hver med en annen pålogging. Du kan da ha samme server i objektleseren åpne flere ganger (hver med et annet innloggings).

For å utføre den samme spørringen du skrev allerede med en annen pålogging, i stedet for å kopiere spørringen bare gjøre et høyreklikk over spørruten> Tilkobling> Endre tilkobling.

Svarte 03/10/2008 kl. 04:41
kilden bruker

stemmer
2

Vise Query Designer med CTRL+ SHIFT+Q

Svarte 12/03/2009 kl. 02:37
kilden bruker

stemmer
3

Jeg liker å sette tastatursnarveien til CTRL+ F1som sp_helptext , da dette gjør det mulig å markere en lagret prosedyre og raskt se på det kode. Jeg synes det er et flott supplement til standard ALT+ F1 sp_help snarvei.

Svarte 12/03/2009 kl. 02:48
kilden bruker

stemmer
5

Bare en liten en - rektangulære valg ALT+ DRAGkommer i virkelig hendig for å kopiere + lime vertikalt på linje kolonnelister (for eksempel når manuelt skriver en massiv UPDATE). Skrive TSQL er omtrent den eneste gangen jeg noen gang bruke den!

Svarte 24/04/2009 kl. 09:00
kilden bruker

stemmer
1

Bruk Object Explorer Detaljer stedet for objekt explorer for visning av tabeller, på denne måten kan du trykke på en bokstav og har det gå til den første tabellen med bokstaven prefiks.

Svarte 15/05/2009 kl. 15:50
kilden bruker

stemmer
1

Hvis du arbeider med utviklere, ofte får en flis av kode som er formatert som en lang linje med kode, så sql ganske skriver add-on for SQL Server Management Studio kan hjelper mye med mer enn 60 + formateringsmuligheter. http://www.dpriver.com/sqlpp/ssmsaddin.html

Svarte 31/07/2009 kl. 04:53
kilden bruker

stemmer
3

Jeg har en planlagt oppgave som hver kveld skriver hvert objekt (bord, sproc, etc.) til en fil. Jeg har fulltekstsøk indeksering sett på utgangs katalog, så når jeg leter etter en bestemt streng (for eksempel en konstant) som er begravd et sted i DB jeg kan svært raskt finne det.

Innenfor Management Studio kan du bruke Oppgaver> Generer scrips ... kommandoen for å se hvordan du utfører dette.

Svarte 12/08/2009 kl. 18:45
kilden bruker

stemmer
1

Bruke TABpå uthevet tekst vil rykke det. Fint for lett å arrangere koden i et lesbart format. Også, SHIFT+ TABvil unindent.

Svarte 23/09/2009 kl. 22:48
kilden bruker

stemmer
0

Å være klar over de to (?) Forskjellige typer vinduer tilgjengelig i SQL Server Management Studio.

Hvis du høyreklikker et bord og velge Openden vil bruke en redigerbar rutenett som du kan endre cellene i. Hvis du høyreklikke på databasen og velg New Querydet vil skape en litt annen type vindu som du ikke kan endre rutenettet i men det gir deg noen andre fine funksjoner, som for eksempel at ulike kodebiter og lar deg utføre dem separat ved valg.

Svarte 23/09/2009 kl. 22:50
kilden bruker

stemmer
0

Bruk en SELECT INTOspørring for å raskt / enkelt lage backup bord til å arbeide og eksperimentere med.

Svarte 23/09/2009 kl. 22:55
kilden bruker

stemmer
6

CTRL+ IFor inkrementell søk . Hit F3eller CTRL+ I for å bla gjennom resultatene.

Svarte 24/03/2010 kl. 00:29
kilden bruker

stemmer
1

Bruke bokmerker er fin måte å holde sunn fornuft hvis du arbeider med eller feilsøking en veldig lang prosedyre. La oss si at du arbeider med en avledet felt i en ytre spørring, og det er definisjonen er ytterligere 200 linjer ned inne i indre spørringen. Du kan bokmerke begge steder, og deretter raskt gå frem og tilbake mellom de to.

Svarte 30/03/2011 kl. 15:24
kilden bruker

stemmer
1

Devart' SQL Komplett Express Edition er en SSMS addon og er et gratis og nyttig addon. Det gir mye nødvendig kode formatering og INTELLISENSE funksjoner.

Jeg bruker også SSMSToolsPackaddon, og det er veldig bra. Jeg elsker;

  1. Det er SQL-snutter hvor du kan lage korte nøkler for kodebiter, og det føyer dem automatisk når du skriver disse tastene og trykk enter.
  2. gjennom historien Søk for å hente dine spørsmål som du kjørte måneder siden, og har glemt, lagret mye av min tid.
  3. Gjenopprett forrige økt. Nå har jeg aldri redde mine spørsmål hvis jeg må bare starte mine vinduer. Jeg bare klikk på gjenopprette siste økten, og min siste økten blir og restaurert og tilkobling opprettes automatisk.
  4. Opprett sette inn uttalelser fra spørringsresultatene (veldig nyttig). Bare elsker denne addon.

En liten fangst nylig innført. SSMSToolsPack er ikke gratis lenger for SSMS 2012. Det er gratis for SSMS 2005 og SSMS 2008, til ennå . Bruk den bare hvis du ønsker å kjøpe det når du migrerer til SSMS 2012. Ellers kanskje det er en god idé å avvenne bort fra den.

Svarte 08/12/2011 kl. 07:02
kilden bruker

stemmer
5

Hvis du drar fra Object Explorer Kolonner node for en tabell det setter en CSV liste kolonner i Query Window for deg

Svarte 25/01/2012 kl. 15:11
kilden bruker

stemmer
2

Jeg er utvikler av SSMSBoost tillegg som nylig ble lansert for SSMS2008 / R2, hensikten var å legge til funksjoner som fart daglige rutineoppgaver:

Shorcuts: F2- (i SQL Editor): script objektet befinner Unted markør

CTRL+ F2- (i SQL Editor): finne objektet under markøren i objekt explorer og fokus det + Det inkluderer snarvei editor, som mangler i SSMS2008 (kommer i SSMS2012)

også SSMSBoost legger verktøylinje med knapper:

  • Synkroniser SQL Editor tilkobling til Object Explorer (fokuserer gjeldende database i Object Explorer)
  • Administrer dine egne foretrukne forbindelser og bytte mellom dem gjennom combo-boksen (inkludert hopp mellom servere)
  • Auto-erstatninger: skrive " sel " vil erstatte den med select * from, og du kan også legge til dine egne token-erstatning par
  • og noen flere nyttige funksjoner

verktøylinjen SSMSBoost

Svarte 09/03/2012 kl. 07:13
kilden bruker

stemmer
1
  • ALT+SHIFT + Selection

Dette er en stor en jeg oppdaget nylig - den lar deg velge en rektangulær del av teksten uavhengig av linjeskift. Veldig hendig for klipping ut en delspørring eller liste raskt.

Svarte 12/03/2012 kl. 16:18
kilden bruker

stemmer
1

Hvis du trenger å skrive en masse sprocs for en API av noe slag. Du kan gjerne dette verktøyet jeg skrev da jeg var en programmerer. Si du har en 200 kolonner tabell som må ha en sproc skrevet for å sette inn / oppdatering og en annen for å slette. Fordi du ikke vil at din søknad å få direkte tilgang tabellene. Bare erklæringen delen vil være en langtekkelig oppgave, men ikke hvis en del av koden er skrevet for deg. Her er et eksempel ...

CREATE PROC upsert_Table1(@col1 int, @col2 varchar(200), @col3 float, etc.)
AS
BEGIN
  UPDATE table1 SET col1 = @col1, col2 = @col2, col3 = @col3, etc.
  IF @@error <> 0
    INSERT Table1 (col1, col2, col3, etc.)
    VALUES(@col1, @col2, @col3, etc.)
END
GO
CREATE PROC delete_Table1(@col1)
AS DELETE FROM Table1 WHERE col1 = @col1

http://snipplr.com/view/13451/spcoldefinition-or-writing-upsert-sp-in-a-snap/

Merk: Du kan også komme til den opprinnelige koden og artikkel skrevet i 2002 (jeg føler meg gammel nå!)
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=549&lngWId=5

Svarte 31/05/2012 kl. 03:49
kilden bruker

stemmer
4

Bruk filtrerings knappen på objektet Explorer til raskt å finne et bestemt objekt (bord, lagret prosedyre, etc.) fra partiell tekst i navnet eller finne objekter som tilhører et bestemt skjema.

Svarte 29/11/2012 kl. 15:19
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more