BULK INSERT

DBA, Developer, SQL Server 2012, T-SQL, Yleistä No Comments

Tämä clippi demonstroi hyvin BULK INSERTin luonteen:

http://dbareactions.tumblr.com/post/48615498654/when-i-use-bulk-insert

Heh :-)

Kuinka insertoida default-arvoja yhdellä insertillä?

DBA, Developer, GUI, SQL Server 2008, SQL Server 2012, T-SQL No Comments

Miten SQL Serverissä voi insertoida useita default-arvoja kantaan yhdellä insertillä? Oikea vastaus: käytä GO:ta. Ohessa tästä esimerkki:

USE Testi
GO

CREATE TABLE #testi
  ( 
     id INT IDENTITY(1, 1) PRIMARY KEY, 
     dt DATETIME DEFAULT GETDATE() 
  ) 

INSERT INTO #testi 
DEFAULT VALUES; 
GO 1000 

SELECT * 
FROM   #testi 

DROP TABLE #testi

Oraclen ja SQL Serverin eroavaisuuksista

DBA, Developer 1 Comment

Olen viimeaikoina saanut työskennellä lähinnä Oracle-kantojen kanssa. Eroavaisuuksia SQL Serveriin löytyy paljonkin. Yksi mielenkiintoinen eroavaisuus on mm. se miten Oracle käsittelee tyhjää arvoa. Toinen on hauska anekdootti on Oracle dual-taulu. Hyvät yhteenvedot Oraclen ja SQL Serverin eroavaisuuksista löytyy dba.se ja stackoverflow.com sivuilta löytyvistä kysymyksistä:

How to make a transition from SQL Server DBA to Oracle?
Basic differences between Oracle and SQL Server?

SQL Server 2012: ProductUpdate

DBA, PowerShell, SQL Server 2012 No Comments

SQL Server 2012:ta myötä SQL Serverin asennukseen on tullut mukava uusi ominaisuus: ProductUpdate. Tämän ominaisuuden avulla voit asentaa samalla kertaa päivitykset, eikä niitä tarvitse erikseen asentaa alkuinstallaation jälkeen. Alkuasennuksen yhteydessä päivitykset voidaan ottaa mukaan käynnistämällä asennus komentoriviltä. Kokeilin tätä seuraavasti:

  • Hain SQL Server 2012 asennusmedian imagena (.iso) koneelleni
  • Hain SQL Server 2012 SP1 päivityksen koneelleni
  • Mounttasin SQL Server 2012 imagen
  • Käynnistin PowerShellin, siirryin mountatulle medialle ja ajoin komennon
PS E:\>.\Setup /Action=Install /UpdateSource="C:\Mediat"

Tämä käynnisti asennuksen ja otti SP1 asennuksen lennosta mukaan:

Lisätietoja asiasta mm. CSS SQL Server Engineers blogista. Lisäksi kannattaa lukea Glen Berryn mainio artikkelisarja (1, 2, 3) SQL Serverin asennuksesta ja muutama artikkeli Tempdb-kannan konfiguroinnista. Päälähteenä asennukseen toimii tietysti BOL.

Indeksikyselyt by SQL Fool

DBA, Developer, SQL Server 2008, SQL Server 2012, T-SQL No Comments

Hyviä SQL-skriboja kaipaa aina. Jokin aika sitten piti tutkia yhdellä SQL Server-palvelimella majailevia indeksejä. Kyhäilin omaa SELECT-lausetta kunnes huomasin RSS feedeistä, että SQL Fool oli tuottanut kaksi erinomaista indeksikyselyä SQL Server-yhteisön tarpeisiin. Otin nämä välittömästi omaan arkistooni ja käyttöön. Ota sinäkin.

Table Value Constructor

DBA, Developer, SQL Server 2008, SQL Server 2012, T-SQL No Comments

Aina löytyy jotain uutta opittavaa, tänään keksin, että SQL Serveristä löytyy ominaisuus nimeltään Table Value Constructor. Ohessa esimerkki sen käytöstä:

USE AdventureWorks2008R2
GO

SELECT *
FROM
  (VALUES
    (101, 'Bikes'),
    (102, 'Accessories'),
    (103, 'Clothes')
  ) AS Category(CategoryID, CategoryName);

SELECT TOP 100 * FROM HumanResources.Department

SELECT d.Name, d.GroupName, Category.CategoryName
FROM HumanResources.Department AS d
INNER JOIN
  (VALUES
    (1, 'Cat1'),
    (2, 'Cat2'),
    (3, 'Cat3')
  ) AS Category(CategoryID, CategoryName)
  ON d.departmentID = Category. CategoryID

Paikalliseen instassiin loggautumiseen on monta eri tapaa

DBA, Developer, SQL Server 2008, SQL Server 2012 No Comments

Paikalliseen SQL Server instanssiin voin kytkeytyä Management Studiolla viidellä eri tapaa

  • Tapa1: [KoneenNimi]\[InstanssinNimi]
  • Tapa2: localhost\[InstanssinNimi]
  • Tapa3: (local)\[InstanssinNimi]
  • Tapa4: .\[InstanssinNimi]
  • Tapa5: 127.0.0.1\[InstanssinNimi]

Ohessa kuva tästä:

ASCII-taidetta skriptiin

DBA, Developer, SQL Server 2008, SQL Server 2012, T-SQL No Comments

Jokaisen itseään kunnioittavan kantapeikon on käytettävä SQL-skriboissa ASCII-taidetta, joka kertoo olennaisen skriptistä. Esim. näin:

PRINT 'TTTTTTTTTTTTTTTTTTTTTTT                    SSSSSSSSSSSSSSS      QQQQQQQQQ     LLLLLLLLLLL             '
PRINT 'T:::::::::::::::::::::T                  SS:::::::::::::::S   QQ:::::::::QQ   L:::::::::L             '
PRINT 'T:::::::::::::::::::::T                 S:::::SSSSSS::::::S QQ:::::::::::::QQ L:::::::::L             '
PRINT 'T:::::TT:::::::TT:::::T                 S:::::S     SSSSSSSQ:::::::QQQ:::::::QLL:::::::LL             '
PRINT 'TTTTTT  T:::::T  TTTTTT                 S:::::S            Q::::::O   Q::::::Q  L:::::L               '
PRINT '        T:::::T                         S:::::S            Q:::::O     Q:::::Q  L:::::L               '
PRINT '        T:::::T                          S::::SSSS         Q:::::O     Q:::::Q  L:::::L               '
PRINT '        T:::::T         ---------------   SS::::::SSSSS    Q:::::O     Q:::::Q  L:::::L               '
PRINT '        T:::::T         -:::::::::::::-     SSS::::::::SS  Q:::::O     Q:::::Q  L:::::L               '
PRINT '        T:::::T         ---------------        SSSSSS::::S Q:::::O     Q:::::Q  L:::::L               '
PRINT '        T:::::T                                     S:::::SQ:::::O  QQQQ:::::Q  L:::::L               '
PRINT '        T:::::T                                     S:::::SQ::::::O Q::::::::Q  L:::::L         LLLLLL'
PRINT '      TT:::::::TT                       SSSSSSS     S:::::SQ:::::::QQ::::::::QLL:::::::LLLLLLLLL:::::L'
PRINT '      T:::::::::T                       S::::::SSSSSS:::::S QQ::::::::::::::Q L::::::::::::::::::::::L'
PRINT '      T:::::::::T                       S:::::::::::::::SS    QQ:::::::::::Q  L::::::::::::::::::::::L'
PRINT '      TTTTTTTTTTT                        SSSSSSSSSSSSSSS        QQQQQQQQ::::QQLLLLLLLLLLLLLLLLLLLLLLLL'
PRINT '                                                                        Q:::::Q                       '
PRINT '                                                                         QQQQQQ                       '
SET NOCOUNT ON;
SELECT TOP 1 * FROM sys.objects;

Vinkki tähän saatu SSIS Junkielta, ASCII-taidetta voi käydä vääntämässä online-työkalussa.

Käynnistä PowerShell suoraan hakemistoon

DBA, Developer, PowerShell No Comments

Monesti PowerShellin haluaa aukeavan suoraan johonkin kansioon niin, että Powershellin prompti on suoraan ko. hakemistossa. Se onnistuu Windows Explorerista seuraavasti:

  1. Mene hakemistoon, johon haluat avata PowerShellin
  2. Paina alt+D, jotta pääset osoiteriville
  3. Kirjoita ‘Powershell’ ja paina Enter –> Powershell avautuu tähän hakemistoon

Great!

Taulun luonti, johdettu kenttä

DBA, Developer, SQL Server 2008, SQL Server 2012, T-SQL No Comments

Ohessa esimerkki CREATE TABLE lauseesta, jossa on johdettu kenttä ja tarkastusmääre (CHECK CONSTRAINT) yhteen kenttään:

USE Testi
GO

IF OBJECT_ID('dbo.customer', 'U') IS NOT NULL
	DROP TABLE dbo.customer

CREATE TABLE dbo.customer (
	customer_id INT IDENTITY(1, 1) NOT NULL,
	customer_name NVARCHAR(40) NOT NULL,
	customer_age INT NOT NULL,
			CONSTRAINT chk_customer_age CHECK (customer_age BETWEEN 0 AND 100), 
	customer_agetype AS
		CASE	WHEN customer_age <= 50 THEN 'young' 
				WHEN customer_age >50 THEN 'old' 
				ELSE NULL 
		END,
	create_date DATE NOT NULL DEFAULT (GETDATE())  
		CONSTRAINT pk_customer_id PRIMARY KEY CLUSTERED (customer_id ASC)
)
GO

INSERT INTO dbo.customer (customer_name, customer_age)
VALUES('Jim', 10)

INSERT INTO dbo.customer (customer_name, customer_age)
VALUES('Joe', 60)

--katsotaan, kaikki ok
SELECT * FROM dbo.customer

INSERT INTO dbo.customer (customer_name, customer_age)
VALUES('Ed', -1)
--> ei mene läpi

INSERT INTO dbo.customer (customer_name, customer_age)
VALUES('Sue', 120)
--> ei mene läpi
Icons by N.Design Studio. Designed By Ben Swift. Powered by WordPress, and Free WordPress Themes
Entries RSS Comments RSS Log in