sql Server etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
sql Server etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

27 Haziran 2014 Cuma

MSSQL Server Büyük Küçük Karakter Önemseyerek (CASE SENSETIVE) Arama

MSSQL server normal select-where komutu ile büyük küçük harf ayrımı yapmadan arama yapmakta örneğin şöyle bir arama yaptığımızda aşağıdaki sonuçlar dönmekte.
biz arama kısmına ana sayfa yı ara dememize rağmen MS-SQL server bie ANA SAYFA ve Ana Sayfa bilgilerinide getirdi.Peki sadece aradığımız kavramın bulunmasını istersen ne yapabiliriz.
Bunun için şöyle bir sorgu yazılabilir.


Gördüğümüz gibi Collate metodu işimize yaradı ANA SAYFA kaydını bize getirmedi peki derseniz ki SQL_Latin1_General_CP1254_CI_AS nedir diye.
Bu  collation serisi Türkçe karakter setinin de bulunduğu gibi değerlerin case-insensitive durumunu belirler ve her dil için özel bir collation yazmak gerekir.

20 Ocak 2014 Pazartesi

Session Verileri Hosting Üzerindeki MSSQL Server Üzerinde Kullanmak

Merhaba Arkadaşlar.
Session verilerini MSSQL server üzerinde kullanmak sitemizde ciddi bir performans artışı ve login sürelerinin istediğiniz ölçüde uzatılmasını sağlar.
Daha önceki yazılarımızda asp.net session verileri mssql üzerinde kullanmayı anlatmıştık fakat sitemiz bir hosting kullanıyorsa kafamıza göre istediğimiz veritabanını ve iznini kullanamamaktayız.
Bu nedenle aşağıdaki adımları izleyerek hosting üzerindeki bir çok sys fonksiyonunu kullanmadan kendi başımıza session verilerini kurabiliriz.
1ADIM :Session databasini kurmak.
-önce hosting panelinden veritabanıadı , kullanıcı adı ve şifre bilgilerini oluşturmalız.
-daha sonra hangi framework kullanıyorsak  onun altındaki dosyayı çalıştırmalız
C:\Windows\Microsoft.NET\Framework\v4.0.30319>aspnet_regsql.exe -S veritabanı_adı_adresi
 -U kullanıcı_adı -P sifre -A all -d database_adı
-----------------------------------------------------------------------------------------------------
Microsoft (R) ASP.NET SQL Kayıt Aracı sürüm 4.0.30319.18408
SQL sunucusuna ASP.NET özelliklerini yüklemek veya bunları kaldırmak için kullan
ılan yönetim yardımcı programı.
Telif hakkı (C) Microsoft Corporation. Tüm hakları saklıdır.
Bu özellikleri ekleme işlemini başlat:
Membership
Profile
RoleManager
Personalization
SqlWebEventProvider
.............
Tamamlandı.
--------------------------------------------------------------------------------------------------------
Şeklinde veritabanını istediğimiz şekilde oluşturuyoruz.
Daha sonra web.config içine aşağıdaki satırları eklemelisiniz (system.web içine eklenmeli)
  <system.web>
<sessionState mode="SQLServer" sqlConnectionString="Data Source=Database_adı;Initial Catalog=veritabanı;User ID=kullanıcı;Password=şifre" cookieless="false" timeout="120" />
  </system.web>

eğer hosting firmanız oluşturduğunuz veritabanına db_owner yetkisini vermişse herhangi bir sorun yaşamadan siteniz hatasız açılacaktır fakat db_owner yetkisi sa kullanıcında ise ve hosting firmanız yetkiyi vermezse ozaman MSSQL server bazı fonksiyonlarını bizim elle eklememiz gerekli.Bu fonksiyonların başında TempGetVersiyon fonksiyonu bulunmakta.

Aşağıda vermiş olduğum bu stored procedure tüm ihtiyaç duyulan fonksiyonları kendisi eklemekte.
Bu stored procedure Microsoft SQL server Management studio ile çalıştırıp hata almamışsanız.Artık session verilerinizi veritabanı üzerinde tutuyorsunuz demektir.

Türkçe hiç bir yerde bu konuyla ilgili bilgi bulamadığım için ekliyorum.2 günlük hata ayıklamının sonucu yazılmıştır.Umarım işinize yarar.


/*********************************************************************
 InstallSqlState.SQL

 Installs the tables, and stored procedures necessary for
 supporting ASP.NET session state on SQL Azure.

 Copyright Microsoft, Inc.
 All Rights Reserved.

 *********************************************************************/

SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[happylifesessionTempSessions]') AND type in (N'U'))
DROP TABLE [dbo].[happylifesessionTempSessions]
GO

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[happylifesessionTempApplications]') AND type in (N'U'))
DROP TABLE [dbo].[happylifesessionTempApplications]
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'GetMajorVersion') AND (type = 'P')))
DROP PROCEDURE [dbo].GetMajorVersion
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'CreateTempTables') AND (type = 'P')))
DROP PROCEDURE [dbo].CreateTempTables
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'TempGetVersion') AND (type = 'P')))
DROP PROCEDURE [dbo].TempGetVersion
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'GetHashCode') AND (type = 'P')))
DROP PROCEDURE [dbo].GetHashCode
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'TempGetAppID') AND (type = 'P')))
DROP PROCEDURE [dbo].TempGetAppID
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'TempGetStateItem') AND (type = 'P')))
DROP PROCEDURE [dbo].TempGetStateItem
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'TempGetStateItem2') AND (type = 'P')))
DROP PROCEDURE [dbo].TempGetStateItem2
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'TempGetStateItem3') AND (type = 'P')))
DROP PROCEDURE [dbo].TempGetStateItem3
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'TempGetStateItemExclusive') AND (type = 'P')))
DROP PROCEDURE [dbo].TempGetStateItemExclusive
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'TempGetStateItemExclusive2') AND (type = 'P')))
DROP PROCEDURE [dbo].TempGetStateItemExclusive2
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'TempGetStateItemExclusive3') AND (type = 'P')))
DROP PROCEDURE [dbo].TempGetStateItemExclusive3
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'TempReleaseStateItemExclusive') AND (type = 'P')))
DROP PROCEDURE [dbo].TempReleaseStateItemExclusive
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'TempInsertUninitializedItem') AND (type = 'P')))
DROP PROCEDURE [dbo].TempInsertUninitializedItem
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'TempInsertStateItemShort') AND (type = 'P')))
DROP PROCEDURE [dbo].TempInsertStateItemShort
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'TempInsertStateItemLong') AND (type = 'P')))
DROP PROCEDURE [dbo].TempInsertStateItemLong
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'TempUpdateStateItemShort') AND (type = 'P')))
DROP PROCEDURE [dbo].TempUpdateStateItemShort
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'TempUpdateStateItemShortNullLong') AND (type = 'P')))
DROP PROCEDURE [dbo].TempUpdateStateItemShortNullLong
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'TempUpdateStateItemLong') AND (type = 'P')))
DROP PROCEDURE [dbo].TempUpdateStateItemLong
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'TempUpdateStateItemLongNullShort') AND (type = 'P')))
DROP PROCEDURE [dbo].TempUpdateStateItemLongNullShort
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'TempRemoveStateItem') AND (type = 'P')))
DROP PROCEDURE [dbo].TempRemoveStateItem
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'TempResetTimeout') AND (type = 'P')))
DROP PROCEDURE [dbo].TempResetTimeout
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'DeleteExpiredSessions') AND (type = 'P')))
DROP PROCEDURE [dbo].DeleteExpiredSessions
GO

/*****************************************************************************/

CREATE PROCEDURE dbo.GetMajorVersion
@@ver int OUTPUT
AS
BEGIN
DECLARE @version nchar(100)
DECLARE @dot int
DECLARE @hyphen int
DECLARE @SqlToExec nchar(4000)

SELECT @@ver = 7
SELECT @version = @@Version
SELECT @hyphen = CHARINDEX(N' - ', @version)
IF (NOT(@hyphen IS NULL) AND @hyphen > 0)
BEGIN
SELECT @hyphen = @hyphen + 3
SELECT @dot = CHARINDEX(N'.', @version, @hyphen)
IF (NOT(@dot IS NULL) AND @dot > @hyphen)
BEGIN
SELECT @version = SUBSTRING(@version, @hyphen, @dot - @hyphen)
SELECT @@ver = CONVERT(int, @version)
END
END
END
GO

/*****************************************************************************/


CREATE PROCEDURE dbo.CreateTempTables
AS
CREATE TABLE [happylifesession].dbo.happylifesessionTempSessions (
SessionId  nvarchar(88) NOT NULL PRIMARY KEY,
Created datetime NOT NULL DEFAULT GETUTCDATE(),
Expires datetime NOT NULL,
LockDate datetime NOT NULL,
LockDateLocal  datetime NOT NULL,
LockCookie int NOT NULL,
Timeout int NOT NULL,
Locked bit NOT NULL,
SessionItemShort VARBINARY(7000) NULL,
SessionItemLong image  NULL,
Flags  int NOT NULL DEFAULT 0,
)

CREATE NONCLUSTERED INDEX Index_Expires ON [happylifesession].dbo.happylifesessionTempSessions(Expires)

CREATE TABLE [happylifesession].dbo.happylifesessionTempApplications (
AppId  int NOT NULL PRIMARY KEY,
AppName char(280)  NOT NULL,
)

CREATE NONCLUSTERED INDEX Index_AppName ON [happylifesession].dbo.happylifesessionTempApplications(AppName)

RETURN 0
GO

/*****************************************************************************/

CREATE PROCEDURE dbo.TempGetVersion
@ver char(10) OUTPUT
AS
SELECT @ver = "2"
RETURN 0
GO

/*****************************************************************************/

CREATE PROCEDURE dbo.GetHashCode
@input varchar(280),
@hash int OUTPUT
AS
/*
 This sproc is based on this C# hash function:

int GetHashCode(string s)
{
int hash = 5381;
int len = s.Length;

for (int i = 0; i < len; i++) {
int c = Convert.ToInt32(s[i]);
hash = ((hash << 5) + hash) ^ c;
}

return hash;
}

However, SQL 7 doesn't provide a 32-bit integer
type that allows rollover of bits, we have to
divide our 32bit integer into the upper and lower
16 bits to do our calculation.
*/

DECLARE @hi_16bit  int
DECLARE @lo_16bit  int
DECLARE @hi_t  int
DECLARE @lo_t  int
DECLARE @len int
DECLARE @i int
DECLARE @c int
DECLARE @carry int

SET @hi_16bit = 0
SET @lo_16bit = 5381

SET @len = DATALENGTH(@input)
SET @i = 1

WHILE (@i <= @len)
BEGIN
SET @c = ASCII(SUBSTRING(@input, @i, 1))

/* Formula:
 hash = ((hash << 5) + hash) ^ c */

/* hash << 5 */
SET @hi_t = @hi_16bit * 32 /* high 16bits << 5 */
SET @hi_t = @hi_t & 0xFFFF /* zero out overflow */

SET @lo_t = @lo_16bit * 32 /* low 16bits << 5 */

SET @carry = @lo_16bit & 0x1F0000 /* move low 16bits carryover to hi 16bits */
SET @carry = @carry / 0x10000 /* >> 16 */
SET @hi_t = @hi_t + @carry
SET @hi_t = @hi_t & 0xFFFF /* zero out overflow */

/* + hash */
SET @lo_16bit = @lo_16bit + @lo_t
SET @hi_16bit = @hi_16bit + @hi_t + (@lo_16bit / 0x10000)
/* delay clearing the overflow */

/* ^c */
SET @lo_16bit = @lo_16bit ^ @c

/* Now clear the overflow bits */
SET @hi_16bit = @hi_16bit & 0xFFFF
SET @lo_16bit = @lo_16bit & 0xFFFF

SET @i = @i + 1
END

/* Do a sign extension of the hi-16bit if needed */
IF (@hi_16bit & 0x8000 <> 0)
SET @hi_16bit = 0xFFFF0000 | @hi_16bit

/* Merge hi and lo 16bit back together */
SET @hi_16bit = @hi_16bit * 0x10000 /* << 16 */
SET @hash = @hi_16bit | @lo_16bit

RETURN 0
GO

/*****************************************************************************/

DECLARE @cmd nchar(4000)

SET @cmd = N'
CREATE PROCEDURE dbo.TempGetAppID
@appName varchar(280),
@appId int OUTPUT
AS
SET @appName = LOWER(@appName)
SET @appId = NULL

SELECT @appId = AppId
FROM [happylifesession].dbo.happylifesessionTempApplications
WHERE AppName = @appName

IF @appId IS NULL BEGIN
BEGIN TRAN

SELECT @appId = AppId
FROM [happylifesession].dbo.happylifesessionTempApplications WITH (TABLOCKX)
WHERE AppName = @appName

IF @appId IS NULL
BEGIN
EXEC GetHashCode @appName, @appId OUTPUT

INSERT [happylifesession].dbo.happylifesessionTempApplications
VALUES
(@appId, @appName)

IF @@ERROR = 2627
BEGIN
DECLARE @dupApp varchar(280)

SELECT @dupApp = RTRIM(AppName)
FROM [happylifesession].dbo.happylifesessionTempApplications
WHERE AppId = @appId

RAISERROR(''SQL session state fatal error: hash-code collision between applications ''''%s'''' and ''''%s''''. Please rename the 1st application to resolve the problem.'',
18, 1, @appName, @dupApp)
END
END

COMMIT
END

RETURN 0'
EXEC(@cmd)
GO

/*****************************************************************************/

CREATE PROCEDURE dbo.TempGetStateItem
@id nvarchar(88),
@itemShort varbinary(7000) OUTPUT,
@locked bit OUTPUT,
@lockDate  datetime OUTPUT,
@lockCookie int OUTPUT
AS
DECLARE @length AS int
DECLARE @now AS datetime
SET @now = GETUTCDATE()

UPDATE [happylifesession].dbo.happylifesessionTempSessions
SET Expires = DATEADD(n, Timeout, @now),
@locked = Locked,
@lockDate = LockDateLocal,
@lockCookie = LockCookie,
@itemShort = CASE @locked
WHEN 0 THEN SessionItemShort
ELSE NULL
END,
@length = CASE @locked
WHEN 0 THEN DATALENGTH(SessionItemLong)
ELSE NULL
END
WHERE SessionId = @id

IF @length IS NOT NULL BEGIN
SELECT [SessionItemLong] FROM [happylifesession].dbo.happylifesessionTempSessions WHERE SessionId = @id
END

RETURN 0

GO

/*****************************************************************************/

CREATE PROCEDURE dbo.TempGetStateItem2
@id nvarchar(88),
@itemShort varbinary(7000) OUTPUT,
@locked bit OUTPUT,
@lockAge int OUTPUT,
@lockCookie int OUTPUT
AS
DECLARE @length AS int
DECLARE @now AS datetime
SET @now = GETUTCDATE()

UPDATE [happylifesession].dbo.happylifesessionTempSessions
SET Expires = DATEADD(n, Timeout, @now),
@locked = Locked,
@lockAge = DATEDIFF(second, LockDate, @now),
@lockCookie = LockCookie,
@itemShort = CASE @locked
WHEN 0 THEN SessionItemShort
ELSE NULL
END,
@length = CASE @locked
WHEN 0 THEN DATALENGTH(SessionItemLong)
ELSE NULL
END
WHERE SessionId = @id

IF @length IS NOT NULL BEGIN
SELECT [SessionItemLong] FROM [happylifesession].dbo.happylifesessionTempSessions WHERE SessionId = @id
END

RETURN 0
GO

/*****************************************************************************/

CREATE PROCEDURE dbo.TempGetStateItem3
@id nvarchar(88),
@itemShort varbinary(7000) OUTPUT,
@locked bit OUTPUT,
@lockAge int OUTPUT,
@lockCookie int OUTPUT,
@actionFlags int OUTPUT
AS
DECLARE @length AS int
DECLARE @now AS datetime
SET @now = GETUTCDATE()

UPDATE [happylifesession].dbo.happylifesessionTempSessions
SET Expires = DATEADD(n, Timeout, @now),
@locked = Locked,
@lockAge = DATEDIFF(second, LockDate, @now),
@lockCookie = LockCookie,
@itemShort = CASE @locked
WHEN 0 THEN SessionItemShort
ELSE NULL
END,
@length = CASE @locked
WHEN 0 THEN DATALENGTH(SessionItemLong)
ELSE NULL
END,
/* If the Uninitialized flag (0x1) if it is set,
 remove it and return InitializeItem (0x1) in actionFlags */
Flags = CASE
WHEN (Flags & 1) <> 0 THEN (Flags & ~1)
ELSE Flags
END,
@actionFlags = CASE
WHEN (Flags & 1) <> 0 THEN 1
ELSE 0
END
WHERE SessionId = @id

IF @length IS NOT NULL BEGIN
SELECT [SessionItemLong] FROM [happylifesession].dbo.happylifesessionTempSessions WHERE SessionId = @id
END

RETURN 0
GO

/*****************************************************************************/

CREATE PROCEDURE dbo.TempGetStateItemExclusive
@id nvarchar(88),
@itemShort varbinary(7000) OUTPUT,
@locked bit OUTPUT,
@lockDate  datetime OUTPUT,
@lockCookie int OUTPUT
AS
DECLARE @length AS int
DECLARE @now AS datetime
DECLARE @nowLocal AS datetime

SET @now = GETUTCDATE()
SET @nowLocal = GETDATE()

UPDATE [happylifesession].dbo.happylifesessionTempSessions
SET Expires = DATEADD(n, Timeout, @now),
LockDate = CASE Locked
WHEN 0 THEN @now
ELSE LockDate
END,
@lockDate = LockDateLocal = CASE Locked
WHEN 0 THEN @nowLocal
ELSE LockDateLocal
END,
@lockCookie = LockCookie = CASE Locked
WHEN 0 THEN LockCookie + 1
ELSE LockCookie
END,
@itemShort = CASE Locked
WHEN 0 THEN SessionItemShort
ELSE NULL
END,
@length = CASE Locked
WHEN 0 THEN DATALENGTH(SessionItemLong)
ELSE NULL
END,
@locked = Locked,
Locked = 1
WHERE SessionId = @id

IF @length IS NOT NULL BEGIN
SELECT [SessionItemLong] FROM [happylifesession].dbo.happylifesessionTempSessions WHERE SessionId = @id
END

RETURN 0
GO

/*****************************************************************************/

CREATE PROCEDURE dbo.TempGetStateItemExclusive2
@id nvarchar(88),
@itemShort varbinary(7000) OUTPUT,
@locked bit OUTPUT,
@lockAge int OUTPUT,
@lockCookie int OUTPUT
AS
DECLARE @length AS int
DECLARE @now AS datetime
DECLARE @nowLocal AS datetime

SET @now = GETUTCDATE()
SET @nowLocal = GETDATE()

UPDATE [happylifesession].dbo.happylifesessionTempSessions
SET Expires = DATEADD(n, Timeout, @now),
LockDate = CASE Locked
WHEN 0 THEN @now
ELSE LockDate
END,
LockDateLocal = CASE Locked
WHEN 0 THEN @nowLocal
ELSE LockDateLocal
END,
@lockAge = CASE Locked
WHEN 0 THEN 0
ELSE DATEDIFF(second, LockDate, @now)
END,
@lockCookie = LockCookie = CASE Locked
WHEN 0 THEN LockCookie + 1
ELSE LockCookie
END,
@itemShort = CASE Locked
WHEN 0 THEN SessionItemShort
ELSE NULL
END,
@length = CASE Locked
WHEN 0 THEN DATALENGTH(SessionItemLong)
ELSE NULL
END,
@locked = Locked,
Locked = 1
WHERE SessionId = @id

IF @length IS NOT NULL BEGIN
SELECT [SessionItemLong] FROM [happylifesession].dbo.happylifesessionTempSessions WHERE SessionId = @id
END

RETURN 0
GO

/*****************************************************************************/

CREATE PROCEDURE dbo.TempGetStateItemExclusive3
@id nvarchar(88),
@itemShort varbinary(7000) OUTPUT,
@locked bit OUTPUT,
@lockAge int OUTPUT,
@lockCookie int OUTPUT,
@actionFlags int OUTPUT
AS
DECLARE @length AS int
DECLARE @now AS datetime
DECLARE @nowLocal AS datetime

SET @now = GETUTCDATE()
SET @nowLocal = GETDATE()

UPDATE [happylifesession].dbo.happylifesessionTempSessions
SET Expires = DATEADD(n, Timeout, @now),
LockDate = CASE Locked
WHEN 0 THEN @now
ELSE LockDate
END,
LockDateLocal = CASE Locked
WHEN 0 THEN @nowLocal
ELSE LockDateLocal
END,
@lockAge = CASE Locked
WHEN 0 THEN 0
ELSE DATEDIFF(second, LockDate, @now)
END,
@lockCookie = LockCookie = CASE Locked
WHEN 0 THEN LockCookie + 1
ELSE LockCookie
END,
@itemShort = CASE Locked
WHEN 0 THEN SessionItemShort
ELSE NULL
END,
@length = CASE Locked
WHEN 0 THEN DATALENGTH(SessionItemLong)
ELSE NULL
END,
@locked = Locked,
Locked = 1,

/* If the Uninitialized flag (0x1) if it is set,
 remove it and return InitializeItem (0x1) in actionFlags */
Flags = CASE
WHEN (Flags & 1) <> 0 THEN (Flags & ~1)
ELSE Flags
END,
@actionFlags = CASE
WHEN (Flags & 1) <> 0 THEN 1
ELSE 0
END
WHERE SessionId = @id

IF @length IS NOT NULL BEGIN
SELECT SessionItemLong FROM [happylifesession].dbo.happylifesessionTempSessions WHERE SessionId = @id
END

RETURN 0
GO

/*****************************************************************************/

CREATE PROCEDURE dbo.TempReleaseStateItemExclusive
@id nvarchar(88),
@lockCookie int
AS
UPDATE [happylifesession].dbo.happylifesessionTempSessions
SET Expires = DATEADD(n, Timeout, GETUTCDATE()),
Locked = 0
WHERE SessionId = @id AND LockCookie = @lockCookie

RETURN 0
GO

/*****************************************************************************/

CREATE PROCEDURE dbo.TempInsertUninitializedItem
@id nvarchar(88),
@itemShort varbinary(7000),
@timeout int
AS

DECLARE @now AS datetime
DECLARE @nowLocal AS datetime

SET @now = GETUTCDATE()
SET @nowLocal = GETDATE()

INSERT [happylifesession].dbo.happylifesessionTempSessions
(SessionId,
SessionItemShort,
Timeout,
Expires,
Locked,
LockDate,
LockDateLocal,
LockCookie,
Flags)
VALUES
(@id,
@itemShort,
@timeout,
DATEADD(n, @timeout, @now),
0,
@now,
@nowLocal,
1,
1)

RETURN 0
GO

/*****************************************************************************/

CREATE PROCEDURE dbo.TempInsertStateItemShort
@id nvarchar(88),
@itemShort varbinary(7000),
@timeout int
AS

DECLARE @now AS datetime
DECLARE @nowLocal AS datetime

SET @now = GETUTCDATE()
SET @nowLocal = GETDATE()

INSERT [happylifesession].dbo.happylifesessionTempSessions
(SessionId,
SessionItemShort,
Timeout,
Expires,
Locked,
LockDate,
LockDateLocal,
LockCookie)
VALUES
(@id,
@itemShort,
@timeout,
DATEADD(n, @timeout, @now),
0,
@now,
@nowLocal,
1)

RETURN 0
GO

/*****************************************************************************/

CREATE PROCEDURE dbo.TempInsertStateItemLong
@id nvarchar(88),
@itemLong  image,
@timeout int
AS
DECLARE @now AS datetime
DECLARE @nowLocal AS datetime

SET @now = GETUTCDATE()
SET @nowLocal = GETDATE()

INSERT [happylifesession].dbo.happylifesessionTempSessions
(SessionId,
SessionItemLong,
Timeout,
Expires,
Locked,
LockDate,
LockDateLocal,
LockCookie)
VALUES
(@id,
@itemLong,
@timeout,
DATEADD(n, @timeout, @now),
0,
@now,
@nowLocal,
1)

RETURN 0
GO

/*****************************************************************************/

CREATE PROCEDURE dbo.TempUpdateStateItemShort
@id nvarchar(88),
@itemShort varbinary(7000),
@timeout int,
@lockCookie int
AS
UPDATE [happylifesession].dbo.happylifesessionTempSessions
SET Expires = DATEADD(n, @timeout, GETUTCDATE()),
SessionItemShort = @itemShort,
Timeout = @timeout,
Locked = 0
WHERE SessionId = @id AND LockCookie = @lockCookie

RETURN 0
GO

/*****************************************************************************/

CREATE PROCEDURE dbo.TempUpdateStateItemShortNullLong
@id nvarchar(88),
@itemShort varbinary(7000),
@timeout int,
@lockCookie int
AS
UPDATE [happylifesession].dbo.happylifesessionTempSessions
SET Expires = DATEADD(n, @timeout, GETUTCDATE()),
SessionItemShort = @itemShort,
SessionItemLong = NULL,
Timeout = @timeout,
Locked = 0
WHERE SessionId = @id AND LockCookie = @lockCookie

RETURN 0
GO

/*****************************************************************************/

CREATE PROCEDURE dbo.TempUpdateStateItemLong
@id nvarchar(88),
@itemLong  image,
@timeout int,
@lockCookie int
AS
UPDATE [happylifesession].dbo.happylifesessionTempSessions
SET Expires = DATEADD(n, @timeout, GETUTCDATE()),
SessionItemLong = @itemLong,
Timeout = @timeout,
Locked = 0
WHERE SessionId = @id AND LockCookie = @lockCookie

RETURN 0
GO

/*****************************************************************************/

CREATE PROCEDURE dbo.TempUpdateStateItemLongNullShort
@id nvarchar(88),
@itemLong  image,
@timeout int,
@lockCookie int
AS
UPDATE [happylifesession].dbo.happylifesessionTempSessions
SET Expires = DATEADD(n, @timeout, GETUTCDATE()),
SessionItemLong = @itemLong,
SessionItemShort = NULL,
Timeout = @timeout,
Locked = 0
WHERE SessionId = @id AND LockCookie = @lockCookie

RETURN 0
GO

/*****************************************************************************/

CREATE PROCEDURE dbo.TempRemoveStateItem
@id nvarchar(88),
@lockCookie int
AS
DELETE [happylifesession].dbo.happylifesessionTempSessions
WHERE SessionId = @id AND LockCookie = @lockCookie
RETURN 0
GO

/*****************************************************************************/

CREATE PROCEDURE dbo.TempResetTimeout
@id nvarchar(88)
AS
UPDATE [happylifesession].dbo.happylifesessionTempSessions
SET Expires = DATEADD(n, Timeout, GETUTCDATE())
WHERE SessionId = @id
RETURN 0
GO

/*****************************************************************************/

CREATE PROCEDURE dbo.DeleteExpiredSessions
AS
DECLARE @now datetime
SET @now = GETUTCDATE()

DELETE [happylifesession].dbo.happylifesessionTempSessions
WHERE Expires < @now

RETURN 0
GO

/*****************************************************************************/

EXECUTE dbo.CreateTempTables
GO

/*************************************************************/
/*************************************************************/
/*************************************************************/
/*************************************************************/

PRINT ''
PRINT '------------------------------------------'
PRINT 'Completed execution of InstallSqlState.SQL'
PRINT '------------------------------------------'

IF NOT EXISTS(SELECT NAME FROM sys.sysusers where name='happylifesession')
BEGIN
CREATE USER [happylifesession] FOR LOGIN [happylifesession]
END
GO
EXEC sp_addrolemember N'db_datawriter', N'happylifesession'
GO
EXEC sp_addrolemember N'db_datareader', N'happylifesession'
GO
EXEC sp_addrolemember N'db_owner', N'happylifesession'
GO

1 Şubat 2011 Salı

asp.net session SQL server kaydetmek

asp.net sessionları veri tabanına kaydetmek istersek C:\Windows\Microsoft.NET\Framework\version altından  aşağıdaki komutu çalıştırarak sql server session tutar hale getirebiliri.z

For Adding SQL mode session state
C:\ >aspnet_regsql -S localhost -U sa -P wrox -ssadd -sstype p
Start adding session state.
...........
Finished.
For Remove SQL mode session state
C:\ >aspnet_regsql -S localhost -U sa -P wrox -ssremove -sstype p
Start adding session state.
...........
Finished.
kullanılacak web.config satırı ise
<sessionState mode="SQLServer"sqlConnectionString="Data Source=localhost;User ID=***;Password=***"cookieless="false"timeout="1000" />

21 Aralık 2010 Salı

SQL SERVER yeni schema eklemek ve şemaya kullanıcı atamak

MSSQL SERVER da burada gördüğüm kodu paylaşmak istedim.
Bu kod seçili tabloda;
  • yeni bir login oluşturur.
  • yeni bir kullanıcı oluşturur  ve loginini belirttiğimiz login yapar
  • tablo sahibini ayarlar
  • yeni bir schema oluştururur
  • şema ile kullanıcıyı eşleştirir
yani schema ile kullanıcı eşleştirmesini ayarlar.

USE tempdb


GO

CREATE LOGIN u1 WITH PASSWORD = 'Mdfjd$sakj943857l7sdfh##30'

CREATE USER u1 WITH DEFAULT_SCHEMA = u1

GO

GRANT CREATE TABLE to u1

GO

CREATE SCHEMA sch1

GO

CREATE SCHEMA u1 AUTHORIZATION u1

GO

EXECUTE AS user = 'u1'

GO

CREATE TABLE t1(c1 int)

GO

revert

GO

SELECT user_name(uid) , * FROM sysobjects WHERE name = 't1'

GO 

MS SQL SERVER KARAKTER KODLAMASINI DEĞİŞTİRME

mssql server karakter kodlamasını case insensitive değiştirmek için
oluşturulan database üzerine sağ tıklanarak Properties penceresi üzerinde
options bölümüne gelinerek üstte yer alan comboboxdan gerekli dil seçeneği seçilir.
.MSSQL server da tablonuzun karakter kodlamasının ne olduğuda buradan öğrenilebilir.

18 Kasım 2009 Çarşamba

Merge Deyimi

Merge Deyimi:
SQL Server 2008 ile gelen diğer bir yenilik olan Merge deyimi ile duruma göre insert veya update yapabiliyoruz. Yani prosedürümüz içerisinde Merge ve Matched deyimlerini kullanarak kaydı bulabiliyorsak güncelleme bulamıyorsak kayıt ekleme yapabiliyoruz. Merge deyimi için aşağıdaki örneği inceleyebilirsiniz.

MERGE INTO StokHareket h
USING Stok s ON s.StokID = h.StokID
WHEN MATCHED THEN UPDATE SET h.Adet = s.Adet
WHEN NOT MATCHED THEN INSERT (StokID, Adet)
VALUES (s.StokID, s.Adet)

28 Eylül 2009 Pazartesi

MS SQL Server 2008 setup

MS SQL Server 2008 Express web platform üzerinden kuruluyor öncelikle yaklaşık 90 KB bir dosyadan indirdikten sonra yüksek performanslı olarak kuruyor.Ama nereye indirdiğini ne yaptığı tabiki size söylemiyor.
Web platform olmadan Fiziksel olarak exe dosyasını indirmek içinde bir adress koymuşlar.
http://blogs.msdn.com/sqlexpress/archive/2009/06/15/installing-sql-server-2008-guidance.aspx

buradan MS Sql Server 2008 Express veriyonun exe halini indirilebilir.

8 Ağustos 2009 Cumartesi

MSSQL Server Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.

1.Çözüm olarak
bağlantı stringi olarak

kullanmak bağlantı zamanı aşımı hatasını giderebilir.
-----------------
1.Çözüm olarak
Dim myCommand As New SqlCommand(sql, myConnection, myTrans)
myCommand.CommandType = CommandType.StoredProcedure
myCommand.CommandTimeout = 0


buradaki 0 değeri bağlantı zaman aşım değerini Limitsiz olarak ulaşmanızı sağlar.

buda oldukca iyi bir yol.

3 Temmuz 2009 Cuma

MSSQL 2008 bak dosyası yükleme Error 3210 giderimi

Merhabalar elinizde *.bak dosyası varsa ve bunu mssql 2008 kayıt etmek istiyorsanız.Öncelikle nasıl yapacağınızı bilmelisiniz ve sonrada muhtemel Error 3210 nasıl giderileceğini bilmeliyiz.


Öncelikle *.bak dosyasını nasıl database yükleriz.Öncelikle Kolaylık olması için bak dosyamızı

C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\Backup altına koyalım.Microsoft Sql Server Management Studio açalım database bağlanıp .
Bağlandıktan sonra Database Dalının üstüne gelerek Restore DataBase diyelim.
to database kısmına daha önce tablolarımızda olmayan bir isim yazalım.Source For Restore Kısmında dosyadan yedekleme yapacağımız için From Device düğmesini seçelim ve Backup Media için File Seçelim.şimdi Add diyerek *.bak dosyamızı seçebiliriz.
Ok diyerek pencemizden veritabanımızı seçelim ve restore işlemini tamamlayalım.
Eğer Error 3210 almışsanız ozaman
1. SQL Server Configuration Manager açın.
2.Gerekli SQL Sever sol tuşla tıklayın
3.Properties SEçin
4. Logon tab'ında Açılır kapanır menuden 'Local system' seçin.
Hatanızı çözecektir.Unutmayın Sql server yeniden başlar ve hizmetiniz bir süre aksayabilir.

20 Haziran 2009 Cumartesi

Joining İşlemi

Veritabanları ile ilgili olarak en gıcık işlem Joining (birleştirme) işlemidir. Mulakat ta yeni bitme bir proje yöneticisi size kaç tür Join var diye sorması muhtemeldir.
Bana sorarsınız kodlamanız iyiyse join falan hikaye Ben hep şöyle yapıyorum ; Diyelim ki bir forum uygulaması yapacaksınız (kategoriler-konular -mesajlar isimli 3 adet tablo yapmamanız imkansız herhalde)şimdi en üste kategoriler var ve bunun Primary Key ile isimlendirdiniz. KATID olsun. Şimdi Kategorilerin altında Konular var bununda yine Primary Key'i KONID olsun.Aynı zamanda hangi kategorinin konusu olduğunada karar vermek için KATID isimli bir INT tipinde sutun koyuyorum.Mesajlarda konunu alt tablosu olduğuna göre Mesajlarda da bu mantıkla yaklaşırsak yine MESID isimli primary key sonrada KATID ,KONID isimli INT tipinde sutunlar hazırlıyorsunuz.
ilişki falan kurmayı unutun ciddiyim ne yapacaz dikkat !
diyelimki kategorilerden birine tıkladınız.KATID alırsınız. Konular Tablonuza bir SELECT çekersiniz Konu.KATID=Kategori.KATID kıyaslarsınız alın size o kategorinin konuları .Aynı mantığı mesajlar içinde yapabilirsiniz. Ne ilişki ne Join Ne bilmem ne Salla gitsin. NEYSE bu söylediklerimiz yasak aman performans falan düşer facebook'unuz yada Google uygulamanız yavaş çalışır. :)

Kırmızı yazdığımız yerleri göz ardı ederek şimdi Join işlemine bakalım.
Bazen iki tablodaki bilgilere ihtiyaç duyarız.Hatta belkide daha fazlasına işte bu gibi durumlarda tablolardaki kıskaçlardan(foreig keyler ve primary keyler) tutarak birbirine bağlar. Ve select ile çekeriz.
Eğer bağlamadan iki tabloya SELECT verirsek bunların tabloların kartezyen çarpımlarını verir.
Örneğin Parça tablo 100 Müşteri tablosunda 50 kayıt olsun toplam 5000 kayıt döndürecektir.Bu örnekte ki gibi SELECT * FROM Parca,Musteri

Klasik Join İşlemi
SELECT tablo1.alan1 tablo2.alan1 FROM tablo1,tablo2 WHERE tablo1.birincianahtar= tablo2.yabancıanahtar [and diğer şartlar]

şeklinde bağlam gerçekleştirilebilir.

Self Join İşlemi (Tabloyu Kendisiyle İlişkilendirme)
Aynı tabloya iki farlı takma ad atayıp (alias) farklı tablolarmış gibi sorgulamalar yapılabilir.
Genelde pek kullanılmaz ama kontrol amaçlı işlemlerde sık sık kullanılabilir. Mesela parça listesinde aynı ürün isimleri karıştırıldığı için isimleri farklı olarak girilmiş olabilir bu nedenle barkod numarasına bakarak kontrol yapabiliriz.
SELECT T1.barkodno,T1.Urunad,T2.barkodno,T2.Urunad AS Parca T1, ParcaT2 WHERE T1.barkodno=T2.barkodno AND T1.Urunad <> T2.Urunad; gibi gibi

Left[outher] Join İşlemi
birinci tablodaki tüm veriler getirilir yanına eğer ikinci tabloda ilişkiye göre veri varsa getirilir.
SELECT Uye.Adi ,Odunc.KitapNo FROM uye LEFT JOIN odunc ON Odunc.UyeID=Uye.UyeID;
Right Join İşlemi
Right[outher] Join İşlemi
ikinci tablodaki tüm veriler getirilir yanına eğer birinci tabloda ilişkiye göre veri varsa getirilir.
SELECT Uye.Adi ,Odunc.KitapNo FROM uye RIGHT JOIN odunc ON Odunc.UyeID=Uye.UyeID;
Inner Join İşlemi
En çok kullanılan tablo birleştirme yöntemidir.her iki tablodaki ortak verileri getirir.
SELECT Uye.Adi ,Odunc.KitapNo FROM uye INNER JOIN odunc ON Odunc.UyeID=Uye.UyeID;
Klasik join işlemi aynı şeydir fakat birleştirme tekniği farklıdır. iş olsun diye yapılmış işte !.

Böylece Kafa Karıştıran join işlemlerinide hal etmiş olduk.

Tabloya Takma Ad (Alias)

Sutunlara AS ifadesi ile takma at takıldığı çok kere görmüşsünüzdür. SELECT * ToplamFiyat SUM(Fiyat) as ToplamFiyat gibi Bu yazıda ise sutuna değilde tabloya takma at takmak istiyoruz.
Özellikle içiçe sorgularda ve Join sorgularında oldukca işimize yarayacaktır.

Bunu nasıl yaparız.
SELECT k.Isim ,l.Fiyat AS Musteri k , Parca l Where l.fiyat > 1000 gibi yaparız
tablolardan sonraki boşluk konularak yapılan kısaltmalara dikkat artık tablomuzun adı kısaltma ile yapılacak

View lar

Tabloların bazı durumlarda sadece bir kısmının kullanıcıya gösterilmesi gerekmektedir.Böylesi bir durumda Select sorgusu çekerek bu azaltılmış tabloda kullanıcımıza bilgilerimizi gösterebiliriz.

İşte View ler yaşayan Select cümlecikleridir.Oluşturmak için aşağıdaki şekli kullanabilirsiniz.

CREATE VIEW view_name[(column_name[,column_name]….)]
[WITH ENCRYPTION]
AS select_statement
[WITH CHECK OPTION]

şeklinde view oluşturabilir.
Örnek
CREATE VIEW vwCustomerASSELECT CustomerId, Company Name, PhoneFROM Customers

Indexler

En baba özellikleri sorgulama sürelerini kısaltmalarıdır.index oluşturarak veritabanındaki kayıt sırasından başka bir sırada sıralama yapabiliriz.
indexler Cluster index,non-Cluster index olarak ikiye ayrılmaktadır.ve baya bir özelliği var hiç sürekli bir çalışan sql de index oluşturmak nasip olmadı ama :) eskiden index çalışan tablonun index 'i izin verilmiyormuş fakat sql server 2005 ve sonrasında izin veriliyor.çok çekirdekli bilgisayarlarda bu iş için kaç çekirdek bile ayırabileceğinizi yazıyorsunuz (maxdop mesela). index oluşturma parametreleri süper
CREATE [UNIQUE][CLUSTERED NONCLUSTERED] INDEX index_ismi
ON [{database_ismi.[schema_ismi]. schema_name.}]
{table_veya_view_ismi}(sütun [ASC DESC][,...n])
[INCLUDE (sütun_ismi[,...n])]
[WITH([,...n])]
[ON {partition_scheme_name(sütun_ismi[,...n])
filegroup_ismi DEFAULT}]

::=
{ PAD_INDEX = {ON OFF}
FILLFACTOR = fillfactor değeri
SORT_IN_TEMPDB = {ON OFF}
IGNORE_DUP_KEY = {ON OFF}
STATISTICS_NO_RECOMPUTE = {ON OFF}
DROP_EXISTING = {ON OFF}
ONLINE = {ON OFF}
ALLOW_ROW_LOCKS = {ON OFF}
ALLOW_PAGE_LOCKS = {ON OFF}
MAXDOP = processor_sayısı }

Bu kadar parametreyi anlatsakta bitmez zaten bir sorun oldukca bakarsınız adamlar bununla ilgili bir şey düşünmüşler mi diye işte !

Mevcut Tabloya Sutun ekleme düzenleme

ALTERdeyimimiz var olan tablolar üzerinde işlemler yaparken kullanılıyor.

Tabloya Alan Ekleme:

Var olan bir tabloya alan eklemek için kullanacağımız ALTER TABLE komutu aşağıdaki gibidir.

ALTER TABLE tablo_adi ADD alan_adi alan_turu;

Örneğin Uyeler tablosuna, Yer adında, 50 karakter uzunluğunda bir metin alanı ekleyelim.

ALTER TABLE Uyeler ADD Yer VARCHAR(50);

Bir komutla birden fazla alan ekleme:

Tabloya birden fazla alan eklemek için kullanacağımız kod:

ALTER TABLE tablo_adi ADD (alan1 alan_turu, alan2 alan_turu, ... alan10 alanturu);

Örnek:

ALTER TABLE Uyeler ADD (Yer VARCHAR(50), Yas INT, Uye_ID Counter, Kayit_Tarihi DATETIME, Profil MEMO);

Bu kod, Uyeler tablosuna şu alanları ekler:
Yer (Metin(50))
Yas (Sayı)
Uye_ID (Otomatik Sayı)
Kayit_Tarihi (Tarih/Saat)
Profil (Not)

Tablodaki Alanları Düzenleme

Tablodaki varolan alanları düzenlemek için kullanacağımız ALTER TABLE komutu aşağıdaki gibidir.

ALTER TABLE tablo_adi MODIFY alan_adi alan_turu;

Örneğin, Uyeler tablosunda, uzunluğu 50 karakter olan Yer alanını 100 karaktere çıkaralım.

ALTER TABLE Uyeler MODIFY Yer VARCHAR(100);

Alan Silme

Tablodaki varolan bir alanı silmek için kullanacağımız ALTER TABLE komutu aşağıdaki gibidir.

ALTER TABLE tablo_adi DROP COLUMN alan_adi;

SQL SERVER Temel Veri Tipleri

Karakterler
Karakter veri türleri karakter dizilimlerini içerir. Dört farklı karakter türü, uzunlukları ve depolama özellikleri açısından çeşitlilik gösterirler.
* char
* varchar
* varchar(max)
* text
Char veri türü, sabit boyuttaki dizilimleri depolamak için kullanılır. Daha önce belirtildiği gibi, bu veri türünün maksimum uzunluğu/boyutu 8,000 karakterdir ki bu, eski versiyonlardaki 255 karakter limiti bağlamında kayda değer bir artıştır. Bir değişken veya bir tablo sütunu nominal boyutundan daha kısa boyuttaki bir dizilimle atanmışsa, bu değişken belirli alan uzunluklarını doldurmak için ardındaki boşluklarla tıkanmıştır.
Varchar veri türü 8,000 karakter uzunluğa kadar olan çeşitli boyutlarda dizilimleri depolar. Uzunluğu nominal boyuttan az olan karakter değeri bir sütuna veya bir değişkene atandığında SQL Server peşinden boşluklar eklemek yerine onu olduğu gibi kaydeder. Varchar veri türleri dizilimin uzunluğunu kaydetmek için 2 ilave byte kaplar/tutar.text veri türü büyük miktarlardaki datayı depolamak için kullanılır. Tek bir alan 2GB (231 - 1 byte) bilgiye kadar depolayabilir. Sadece 16 byte pointer tabloda depolanır. Bu nedenle ilave işlem, metin sütunlarının kullanımıyla ilişkilendirilir. Metin değerleri işlemi için bazı özel fonksiyonlar bulunmaktadır.Not
text veri türlerini kullanmaktan kaçının çünkü Microsoft, SQL Server’ın gelecek versiyonlarında bunu kaldırmayı planlamaktadır. Onun yerine yeni varchar (max) veri türü kullanılmalıdır.
Varchar (max), varchar veri türü gibi görünür ve işler ancak dahili yapı ve işlevselliği daha çok metin veri türü gibidir.

Unicode Karakter Dizilimleri
Microsoft Sql Server 2005 non-ASCII karakter setleri kullanan Unicode datayı depolamak için dört karakter veri türüne sahiptir. Bunlar char, varchar, varchar (max) ve metin veri türlerine eşdeğerdir ve aşağıdaki gibi adlandırılırlar:
* nchar
* nvarchar
* nvarchar(max)
* ntext
Bu yeni veri türleri ile eski veri türleri arasındaki fark; yeni veri türlerinin karakter başına 2 byte kaplayan Unicode karakterlerini tutabilmeleridir. Bu nedenle, depolayabildikleri maksimum dizilim uzunluğu, eski veri türlerindekinin yarısıdır.

Tarih Ve Saat Veri Türleri
SQL Server tarih ve saati depolamak için iki T-SQL veri türünü destekler:
* datetime
* smalldatetime

Tam Sayılar
SQL Server 1-, 2-, 4-, and 8-byte tamsayıları destekler. Bit veri türü mantıksal doğru ve yanlış değerleri temsil eden 1 ve 0 depolamak için kullanılır. Aşağıdaki tablo tamsayı veri türlerini, depolama boyutlarını ve değerlerin aralığını listeler:

int veri türleriyle ilgili en güzel şey küçük alanda oldukça fazla sayı depolayabilmesidir. Bu nedenle sık sık anahtar değerler (key values) için kullanılırlar. Ana anahtarın veri türü int ise tablo dört milyara kadar kayıt depolayabilir ki miktar herhangi bir amaç için oldukça yeterlidir. Bu nedenle tablonuzun boyutundan emin değilseniz ana anahtar olarak int kullanın.

Parasal Veri Türleri
Money and smallmoney veri türleri ondalık sayıların precionları ve küçük boyuttaki gerçek sayılar arasındaki uzlaşma/orta yoldur. Smallmoney 4 byte kaplar ve int sayılar gibi aynı dahili yapıyı kullanır. Veri ondalık noktadan sonra dört basamağa kadar olabilir. Bu nedenle –214,768.3648 ile 214,768.3647 aralığındaki sayıları smallmoney veri türünde depolayabilirsiniz. The Money veri türü bilgiyi yerleştirme için the bigint veri türüyle aynı yapıyı kullanır. Depolama için 8 byte kullanır, o yüzden değerleri -922,337,203,685,477.5808 ile +922,337,203,685,477.5807 arasında olmalıdır.
Parasal sabitler den önce $ veya diğer 18 para sembolünden biri gelebilir

Binary Veri Türleri�
Binary veri tipleri bitlerin diziliminin yerleştirilmesi için kullanılır. SQL Server dört temel çift değişkenli veri tipini, karakter veri türü ile benzer nitelikleri desteklemektedir:
* binary
* varbinary
* varbinary(max)
* image

Tablo Oluşturma

CREATE tabloadi (sutunadi1 veritipi[NOT NULL],sutunadi2 veritipi[NOT NULL],...,) şeklinde
tablo oluşturulabilir.
tabiki sutun oluşturmada bazı anahtar kelimelerle bir çok şey ekleniyor. (mesela tablonun primary key olması gibi)

ÖRNEK: CREATE ParcaList (ParcaSeri INTEGER NOT NULL CONSTRAINT ParcaNo PRIMARY KEY,ParcaAdi VARCHAR(63) NOT NULL)

Veri Tabanı Nasıl Oluşturulur-Silinir.

Veritabanını CREATE Database dbParcalar; şeklinde oluşturup,
DROP Database dbParcalar; şeklinde de silebilirsiniz.

Ders kısa oldu ama bu kadar.

SQL SERVER NOTLARI


SQL Ders Notlarımdan ve Kitaplardaki Okuduğum Bilgileri Burada Paylaşmayı düşünüyorum 70-431 sınavına hazırlanmayı düşünüyorum.
Umarım Sizin içinde faydalı olur.