Sql Server Optimizasyonu ile ilgili güzel bir makale...
http://harriyott.com/2006/01/sql-server-performance-tips.aspx
sql etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
sql etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
14 Mayıs 2008 Çarşamba
5 Şubat 2008 Salı
Sql Server - Identity Column resetlemek
Sql Server'da bir tablo icerisinde bulunan, identity kolonu resetlemek yada identity baslangic numarasini vermek icin asagidaki DBCC ifadesi kullanilabilir.
DBCC (Database Console Commands) CHECKIDENT ifadesinin son parametresini istenilen baslangic degeri atilir. "0" degeri vererek identity kolonu resetleyelim.
USE TestDB
GO
DBCC CHECKIDENT (TestTable, RESEED, 0)
GO
DBCC (Database Console Commands) in diger ifadelerinin listesini ve aciklamasini asagidaki linkden bulabilirsiniz.
http://msdn2.microsoft.com/en-us/library/aa258281.aspx
DBCC (Database Console Commands) CHECKIDENT ifadesinin son parametresini istenilen baslangic degeri atilir. "0" degeri vererek identity kolonu resetleyelim.
USE TestDB
GO
DBCC CHECKIDENT (TestTable, RESEED, 0)
GO
DBCC (Database Console Commands) in diger ifadelerinin listesini ve aciklamasini asagidaki linkden bulabilirsiniz.
http://msdn2.microsoft.com/en-us/library/aa258281.aspx
22 Ocak 2008 Salı
SQL Server - T-Sql ile Dosya boyutunu bulma
CREATE FUNCTION udf_GetFileSize (@filename varchar(1000))
returns bigint
as
BEGIN
DECLARE @FS int
DECLARE @OLEResult int
DECLARE @FileID int
DECLARE @Size bigint
DECLARE @Flag bigint
Set @size =0
Set @Flag =0
EXECUTE @OLEResult = sp_OACreate 'Scripting.FileSystemObject', @FS OUT
EXECUTE @OLEResult = sp_OAMethod @FS, 'GetFile', @FileID OUT,@filename
IF @OLEResult <> 0
begin
set @Flag =-1
end
else
begin
EXECUTE @OLEResult = sp_OAGetProperty @FileId,'Size', @Size OUT
IF @OLEResult <> 0
begin
set @Flag =-2
end
end
EXECUTE @OLEResult = sp_OADestroy @FileID
EXECUTE @OLEResult = sp_OADestroy @FS
if @flag <> -1 and @flag <> -2
begin
set @flag = @size
end
return @flag
END
'Kullanimi
select dbo.udf_GetFileSize ('c:\temp\test.txt')
returns bigint
as
BEGIN
DECLARE @FS int
DECLARE @OLEResult int
DECLARE @FileID int
DECLARE @Size bigint
DECLARE @Flag bigint
Set @size =0
Set @Flag =0
EXECUTE @OLEResult = sp_OACreate 'Scripting.FileSystemObject', @FS OUT
EXECUTE @OLEResult = sp_OAMethod @FS, 'GetFile', @FileID OUT,@filename
IF @OLEResult <> 0
begin
set @Flag =-1
end
else
begin
EXECUTE @OLEResult = sp_OAGetProperty @FileId,'Size', @Size OUT
IF @OLEResult <> 0
begin
set @Flag =-2
end
end
EXECUTE @OLEResult = sp_OADestroy @FileID
EXECUTE @OLEResult = sp_OADestroy @FS
if @flag <> -1 and @flag <> -2
begin
set @flag = @size
end
return @flag
END
'Kullanimi
select dbo.udf_GetFileSize ('c:\temp\test.txt')
Etiketler:
sql,
Sql Server,
t-sql,
Tips and Tricks
6 Ağustos 2007 Pazartesi
Bir resultsetden split edilmis string olusturmak
Sql Server üzerinde yaratacagimiz bu UDF, özellikle Reporting konusunda kullanilabilecek bir function örnegidir.
Örnegimizde Northwind veritabani kullaniyoruz.
Bunun icin öncelikle veritabaninda "GetProductIDs" isimli bir UDF olusturuyoruz. Fonksiyonumuz parametere olarak OrderID alacak ve OrderDetails tablosunda bu OrderID ye ait olan kayitlardaki ProductID leri bize virgül ile ayrilmis sekilde varchar olarak döndürecek.
CREATE FUNCTION [dbo].[GetProductIDs]
(
@OrderID int
)
RETURNS nvarchar(MAX)
AS
BEGIN
DECLARE @productIDList nvarchar(MAX)
SELECT @productIDList = COALESCE(@productIDList + ', ', '') +
CAST(ProductID AS varchar(20))
from dbo.[Order Details] Where OrderID = @OrderID
return @productIDList
END;
Fonksiyonumuz database üzerinde yaratildiktan sonra, su sekilde fonksiyonumuzu test edebiliriz.
Select dbo.GetProductIDs(OrderID) as ProductIDs from dbo.Orders
Örnegimizde Northwind veritabani kullaniyoruz.
Bunun icin öncelikle veritabaninda "GetProductIDs" isimli bir UDF olusturuyoruz. Fonksiyonumuz parametere olarak OrderID alacak ve OrderDetails tablosunda bu OrderID ye ait olan kayitlardaki ProductID leri bize virgül ile ayrilmis sekilde varchar olarak döndürecek.
CREATE FUNCTION [dbo].[GetProductIDs]
(
@OrderID int
)
RETURNS nvarchar(MAX)
AS
BEGIN
DECLARE @productIDList nvarchar(MAX)
SELECT @productIDList = COALESCE(@productIDList + ', ', '') +
CAST(ProductID AS varchar(20))
from dbo.[Order Details] Where OrderID = @OrderID
return @productIDList
END;
Fonksiyonumuz database üzerinde yaratildiktan sonra, su sekilde fonksiyonumuzu test edebiliriz.
Select dbo.GetProductIDs(OrderID) as ProductIDs from dbo.Orders
27 Temmuz 2007 Cuma
Multi Parameter > Where IN clause
SQL Split UDF:
if exists (select * from dbo.sysobjects where id =
object_id(N'[dbo].[UTILfn_Split]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[UTILfn_Split]
GO
create function dbo.UTILfn_Split(
@String nvarchar (4000),
@Delimiter nvarchar (10)
)
returns @ValueTable table ([Value] nvarchar(4000))
begin
declare @NextString nvarchar(4000)
declare @Pos int
declare @NextPos int
declare @CommaCheck nvarchar(1)
--Initialize
set @NextString = ''
set @CommaCheck = right(@String,1)
--Check for trailing Comma, if not exists, INSERT
--if (@CommaCheck <> @Delimiter )
set @String = @String + @Delimiter
--Get position of first Comma
set @Pos = charindex(@Delimiter,@String)
set @NextPos = 1
--Loop while there is still a comma in the String of levels
while (@pos <> 0)
begin
set @NextString = substring(@String,1,@Pos - 1)
insert into @ValueTable ( [Value]) Values (@NextString)
set @String = substring(@String,@pos +1,len(@String))
set @NextPos = @Pos
set @pos = charindex(@Delimiter,@String)
end
return
end
--------
DECLARE @params nvarchar(100)
SET @params='962, 979, 971'
select * from dbo.TABLETEST
where ID IN (select * from dbo.UTILfn_Split(@params,','))
if exists (select * from dbo.sysobjects where id =
object_id(N'[dbo].[UTILfn_Split]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[UTILfn_Split]
GO
create function dbo.UTILfn_Split(
@String nvarchar (4000),
@Delimiter nvarchar (10)
)
returns @ValueTable table ([Value] nvarchar(4000))
begin
declare @NextString nvarchar(4000)
declare @Pos int
declare @NextPos int
declare @CommaCheck nvarchar(1)
--Initialize
set @NextString = ''
set @CommaCheck = right(@String,1)
--Check for trailing Comma, if not exists, INSERT
--if (@CommaCheck <> @Delimiter )
set @String = @String + @Delimiter
--Get position of first Comma
set @Pos = charindex(@Delimiter,@String)
set @NextPos = 1
--Loop while there is still a comma in the String of levels
while (@pos <> 0)
begin
set @NextString = substring(@String,1,@Pos - 1)
insert into @ValueTable ( [Value]) Values (@NextString)
set @String = substring(@String,@pos +1,len(@String))
set @NextPos = @Pos
set @pos = charindex(@Delimiter,@String)
end
return
end
--------
DECLARE @params nvarchar(100)
SET @params='962, 979, 971'
select * from dbo.TABLETEST
where ID IN (select * from dbo.UTILfn_Split(@params,','))
Kaydol:
Kayıtlar (Atom)