Posts Tagged With 'SQL Server'

  • Nov
  • 10
  • 2011

Nedirtv.com Kasım ayı webinerleri…

Tags: , , | View: 213 | Comments:

Nedirtv.com‘un düzenlediği webinerler kaldığı yerden devam ediyor. Kasım ayında yeni 3 konu ile uzun süredir ara verilen webinerler tekrardan başlıyor. Oldukça güncel ve yeni konulara değinilecek bu webinerlere katılmanızı tavsiye ederim…

Konu: NoSQL Nedir? – MongoDB ile .NET Kardesligi
Tarih: 14 Kasim Pazartesi 21:00
Konuşmacı: İbrahim ATAY
Link: https://www.livemeeting.com/cc/mvp/join?id=N7732S&role=attend


Konu: SQL Server – Stored Procedure ve Function
Tarih: 21 Kasim Pazartesi 21:00
Konuşmacı: Gorkem SEZGİN
Link: https://www.livemeeting.com/cc/mvp/join?id=Q24KBF&role=attend


Konu: HTML 5
Tarih: 28 Kasım Pazartesi 21:00
Konuşmacı: Cemil UZUN
Link: https://www.livemeeting.com/cc/mvp/join?id=H7GTWK&role=attend

  • Nov
  • 25
  • 2010

Paging and sorting pattern in SQL Server

Tags: | View: 394 | Comments:

If you are developing some applications with .NET Framework, you should familiar with some built-in sorting and paging methods of some user controls(for example, grids…)  in both web and Windows enviroments for your data which are stored in SQL Server. But to be honest, I do not like these methods so much. In some cases, they really rock and save life, but in some cases you really have to think about a better way for sorting ang paging.

Nowadays, I am in a case that I have to write some custom sorting and paging methods for my applications. The reason is because of some performance needs and also to have more control on these methods. So I gave these sorting and paging duty to SQL Server and create a simple pattern as stored procedure.

With this pattern, I am able to sort my data according to any column and also apply the paging according to this sort with preferred page size. And as you know that this is not so easy with some built-in control methods…

So here you can use this pattern. And if you have a better approach or idea, please let me know…

ALTER PROCEDURE SEARCH_SOMETHING
(
	@param1 nvarchar(50),
	@param2 int,
	...
	..
	.
	@skipedIndex int,
	@pagesize int,
	@sortColumn nvarchar(50),
	@direction nvarchar(1)
)
AS
SELECT  * FROM
(
Select
Table1.Column1,
Table1.Column2,
Table1.Column3,
row_number() OVER (
		ORDER BY
		CASE
			WHEN @sortColumn='' AND @direction='' THEN  Table1.Column1

		END DESC,
		CASE -----D for desc
			WHEN @sortColumn='Column1' AND @direction='D' THEN  Table1.Column1

		END DESC,
		CASE ----A for asc
			WHEN @sortColumn='Column1' AND @direction='A' THEN  Table1.Column1

		END ASC,
		CASE
			WHEN @sortColumn='Column2' AND @direction='D' THEN  Table1.Column2

		END DESC,
		CASE
			WHEN @sortColumn='Column2' AND @direction='A' THEN  Table1.Column2

		END ASC
) AS rownumber
 from Table1
WHERE ---THESE ARE THE CONDITIONS FOR YOUR SQL QUERY
(@param1='' or Table1.Column1 = @param1) AND
(@param2=-1 or Table1.Column2 = @param2) AND
......
..
..

) as t ---THIS IS THE PAGING CONDITIONS
WHERE (
		(@skipedIndex=-1 and @pagesize=-1 ) OR
	    (t.rownumber between @skipedIndex+1 and @skipedIndex + @pageSize)
	   )
  • Jan
  • 15
  • 2010

TFS 2008′i SQL Server 2008 ile çalıştırmak istersek…

Tags: , | View: 529 | Comments:

TFS 2008′i SQL Server 2008 yüklü bir makinaya kurmak istediğimizde aşağıdaki gibi bir hata sinirinizi bozacaktır.

A compatible version of SQL Server is not installed.

TFS 2008′i SQL Server 2008 ile kullanmak istediğimizde TFS 2008′in Service Pack 1′li halini kurmak gerekecektir. TFS 2008 SP1 ile ancak SQL Server 2008′i kullanabilir hale geliyoruz kısaca…Peki bunu nasıl yapacağız?

TFS 2008′in Service Pack 1′li bir halini oluşturmak gerekecek.Bunun için öncelikle TFS 2008′i DVD’sinin içeriğini bir bilgisayarımızda bir yere kopyalamak gerekiyor. D:\TFS_2008\ gibi…

Daha sonra bu adresten TFS 2008 SP1 indirmeniz gerekiyor.İndirdikten sonra TFS 2008 SP1′i extract etmeniz gerekiyor. Bunun için C:\TFS90SP1-KB949786-ENU /extract:d:\TFS_2008_SP1\ komutunu çalıştırmanız yeterli olacaktır.

Bu aşamadan sonra elimizde hem TFS 2008, hemde TFS 2008 SP1 olacaktır. Şimdi bu ikisini birleştirmek kaldı.Bunun içinde;

msiexec /a D:\TFS_2008\vs_setup.msi /p d:\TFS_2008_SP1\TFS90sp1-KB949786.msp TARGETDIR=d:\TFS_2008_wSP1

komutunu çalıştırmak yeterli olacaktır. Daha sonra D:\TFS_2008_wSP1 klasöründen kurulumu yapabilirsiniz.

  • Aug
  • 09
  • 2009

SQL Server 2008′de “Saving Changes Not Permitted” hatası

Tags: | View: 1,565 | Comments:

SQL Server 2008 Management Studio ile bir tabloda değişiklik yaptığınız zaman, ayarlarınızdan dolayı aşağıdaki hatayı alıyor olacaksınız.

Saving changes is not permitted. The changes you have made require the following tables to be dropped and re-created. You have either made changes to a table that can’t be re-created or enabled the option Prevent saving changes that require the table to be re-created.

Bunun nedeni; tablolarda designer tarafında yapılan değişiklikler için, SQL Server drop ve re-create işlemlerini uygular.Management Studio’daki bazı ayarlardan dolayı da bu işlem gerçekleşemiyor olabiliyor ve yukarıdaki hatayı alıyoruz.

Bunun için yapmamız gereken SQL Server Managemet Studio’dan yukarıdaki menü aracılığıyla(Tools > Options) Options’ı açıyoruz. Çıkacak ekrandan soldaki kısımdan Designer’ı seçtiğimizde karşımıza çıkacak ekrandaki “Prevent saving changes that require table re-creation” daki işareti kaldırıyoruz.

Bu işlemden sonra tablolar üstünde istediğimiz değişiklikleri yapabiliyor olacağız…

  • Aug
  • 06
  • 2009

SQL Server’da LSN hatası

Tags: | View: 516 | Comments:

“Error 9003: The LSN(42:132:1) passed to log scan in database ‘<DBName>’ is invalid”

SQL Server’da bir database attach etmeye çalıştığınız zaman yukarıdaki gibi bir hata alıyorsanız,yapmanız gerekenler çok basit. Bu hatayı attach etmeye çalıştığımız database’in .mdf ve .ldf dosyalarının uyuşmamasından dolayı alıyoruz. LSN(Log sequence number) uyuşmazlığından dolayı alınan bu hatayı aşmak için sadece .mdf dosyasının attach etmek yeterli olacaktır. SQL Server .ldf dosyasını kendi oluşturacaktır.

Peki bu LSN ne?

SQL Server’da her transaction log, bu LSN numarası ile tutulur. Database üzerindeki değişiklikler bu numaralara göre takip edilir ve log’lanır…Database’deki her hangi bir sorunda bu loglardan sağlıklı bir duruma gelinebilir. İşte bu LSN numaralarının uyuşmazlığı server’a bir DB attach ettiğimiz yada backup’dan restore yaptığımız yukarıdaki hatayı karşımıza çıkaracaktır.

  • Aug
  • 02
  • 2009

SQL Server’da:”Failed to retrieve data for this request.” hatası…

Tags: | View: 2,112 | Comments:

SQL Server 2008′de, bir database dosyasını eklemek(attach) istediğinizde aşağıdaki gibi hatalar alıyorsanız çözümü çok kolay;

Failed to retrieve data for this request. (Microsoft.SqlServer.Management.Sdk.Sfc)

ADDITIONAL INFORMATION:
An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)
——————————
CREATE FILE encountered operating system error 5(failed to retrieve text for this error. Reason: 15105) while attempting to open or create the physical file  (Microsoft SQL Server, Error: 5123)

ADDITIONAL INFORMATION:An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)

———————————————————————————————————————————————

CREATE FILE encountered operating system error 5(failed to retrieve text for this error. Reason: 15105) while attempting to open or create the physical file (Microsoft SQL Server, Error: 5123)

Öncelikle bu hatayı neden alıyor, bunu anlamak lazım. Bu işlemi yaparken ki database kullanıcısının dosya sistemi üzerinde yetkisi olmadığından dolayı bu hatayı alıyoruz. “sa” bile olsa bağlandığımız kullanıcı bu hatayı alıyor olacağız. Bu işlemi SSMS(SQL Server Management Studio)’ya Windows Auth. ile bağlanıp, aynı attach işlemini yaptığımızda sorunsuz bir şekilde bu işlemi yapabiliyoruz.

  • Jul
  • 21
  • 2009

Büyük dosyaları, database’e atmak…

Tags: , , | View: 289 | Comments:

Bir dosyadaki verileri(~100MB) database’e atmak gibi basit bir operasyon yapmam gerekiyordu. Dosya “tab delimited” bir dosya ve yaklaşım 45 civarı da kolon var ve kolonlarda dolu. En basit ve ilk akla gelen yöntem satır satır bu kayıtları database’e atmak olacaktır. Ancak bu kadar çok veriyi atarken oluşabilecek “time-out”lardan dolayı, hangi kayıdın atıldığı ya da atılmadığını yönetmek sonra daha zor olacaktır.Ki bu kadar büyük bir dosyayıda satır satır okumak IO olarakta, dikkat edilmediğinde gereksiz bir maliyet. Satır satır database’e kayıt etmekte database server’ı gereksiz yere yoracaktır zaten.

  • Jun
  • 03
  • 2009

SQL’de Trigger’ı yok saymak

Tags: | View: 227 | Comments:

Bazen üzerinde TRIGGER çalışan tablolarda Trigger’ı es geçerek sorgu çalıştırmanız gerekebilir.Bunun için çalıştıracağınız sorgunun öncesinde trigger’ı disable etmeniz gerekmekte.Sorgumuzu çalıştırdıktan sonra tekrardan enable etmeyi unutmuyoruz tabi ki.

ALTER TABLE Tablo1 DISABLE TRIGGER ALL

UPDATE Tablo1 SET [ update edilecek değerler ]

ALTER TABLE Tablo1 ENABLE TRIGGER ALL

ALL şeklinde kullanırsak tablo üstündeki tüm trigger’ları disable etmiş oluruz. ALL yerine trigger ismi yazıp sadece o trigger üstünde enable/disable işlemini gerçekleştirebiliriz.

  • Apr
  • 27
  • 2009

SQL Server’da Attach DB

Tags: | View: 376 | Comments:

CREATE DATABASE [DB_ADI] ON

( FILENAME = N’MDF_DOSYASI ),

( FILENAME = N’LDF_DOSYASI )

FOR ATTACH

GO

Yukarıdaki kod ile SQL Server’da attach işlemini yapabiliriz. Bu kod SQL Server 2005 ve SQL Server 2008 de geçerli,SQL Server 2000′de “sp_attach_db”(stored procedure) çalıştırmak gerekli.

  • Apr
  • 24
  • 2009

Team Foundation Server ve Reporting Service sorunu

Tags: , , | View: 734 | Comments:

Team Foundation Server’ı sorunsuz yükledikten sonra, bu başarının vermiş olduğu sevinç projelerin raporlarını görüntülemek istediğimizde biraz sekteye uğrayabilir. TFS kurulumundan sonra Reporting Service’e müdahale etmeden çalışan bir raporlama sistemi ile ne yazık ki henüz karşılaşmadım ve duymadım. (:

Visual Studio’da Team Explorer aracılığıyla yaratmış olduğumuz projenin portal’ını açtığımızda raporları görüntülerken, ya da direk Reporting Server’ın raporlarının bulunduğu web sitesini açtığımızda aşağıdaki gibi bir hata alıyorsak yapmamız gereken bir kaç şey var.

An error has occurred during report processing. (rsProcessingAborted)
Query execution failed for dataset ‘WorkItemTypeParam’. (rsErrorExecutingCommand)

Öncelikle bunun nedenini bilmemiz lazım. SQL Server loglarına bakarsak, bir login sorunun log dosyalarına yazıldığını görürüz.Bu durum TFS’in TfsWareHouse database’ine ilgili raporları çekecek kullanıcının(bu kullanıcı kurulum esnasında belirttiğiniz ya da Reporting Service’i çalıştıran kullanıcı,ben genellikle local NETWORK SERVICE’ni kullanıyorum) ilgili yetkisi olmamasından dolayı. Bu yetkiyi vermek için aşağıdaki SQL sorgusunu çalıştırmamız gerekmekte.

USE [TfsWarehouse]

GO

CREATE USER [NT AUTHORITY\NETWORK SERVICE] FOR LOGIN [NT AUTHORITY\NETWORK SERVICE]

GO

USE [TfsWarehouse]

GO

EXEC sp_addrolemember N’TfsWarehouseDataReader’, N’NT AUTHORITY\NETWORK SERVICE’

GO

Bu sorgudan sonra raporların tekrardan process edilebiliyor olması gerekmekte.Bunun için bir kontrol yapmamız lazım.TFS bu aşamada Analysis Server’ı kullanıyor.Daha doğrusu Reporting Service’de bulunan OLAP data kaynağı Analysis Server’ı kullanıyor.OLAP data kaynağıda ilgili dataları Reporting Service’e ilgili dataları sağlayamadığından yukarıdaki hatayı alıyoruz. Yetki olayını yaptıktan sonra SQL Management Studio’dan bu sefer’de Analysis Server’a bağlanmamız gerekmekte.Databases kısmından TfsWarehouse’a sağ tıklayıp Process dememiz gerekmekte.(Çıkan ekranda OK derseniz Process işlemi başlayacaktır.)

analysisserver

Bu işlemin sorunsuz çalışması lazım.Bir sorun çıkarsa önceki SQL srogusunun sorunsuz ve düzgün kullanıcı ile çalıştırıldığından emin olun.

Şimdi tekrardan raporları görüntülemeye çalışın.Sorunsuz bir şekilde raporların geldiğini göreceksiniz.Benzer bir hatanın devam ettiğini görürseniz endişelenmeyin. Hata devam ediyorsa OLAP data kaynaklarının Reporting Service tarafından alınmadığındandır.


webserviceBu aşamada son bir şey yapmamız gerekmekte. TFS’in yüklü olduğu makinada http://localhost:8080/Warehouse/v1.0/warehousecontroller.asmx adresine gitmemiz gerekmekte.Çıkan methodlardan GetWareHouseStatus’e tıklayıp Invoke dememiz gerekiyor.Bu method Idle,ProcessingOlap,RunningAdapters ve Blocked şeklinde değerler dönmekte. Idle olana kadar beklememiz gerekmekte.Invoke’u çağırarak bunu kontrol edebiliriz.Durum Idle olduğunda,yine http://localhost:8080/Warehouse/v1.0/warehousecontroller.asmx adresinde bu sefer Run methodunu çağırmamız ve dönen değerin true oluyor olması lazım.


Bütün bu işlemlerden sonra raporlarımızın sorunsuz bir şekilde görüntüleniyor olması gerekmekte.