TSQL de With kullanarak belirli sayıda elemanı olan bir seri oluşturabilirsiniz. Örneğin 1 den başlayarak 1000'e kadar olan integer sayılardan oluşan bir seri oluşturmak istiyorsanız aşağıdaki scripti kullanabilirsinizInteger-Serisi
123456789WITHT(ID)AS(SELECT1 IDUNIONALLSELECTID + 1FROMTWHEREID < 1000)SELECT*FROMTOPTION(MAXRECURSION 1000)Eğer bir tarihten başlayarak belirli bir tarihe kadar olan tüm günleri barındıran bir seri oluşturmak istersek bu sefer aşağıdaki gibi bir script kullanmamız gerekir.Aşağıdaki script 2011.01.01 tarihinden itibaren tarihe 1 gün ekleyerek bugune kadar tüm tarihleri oluşturur. maxrecursion 1000 diyerek ise en fazla 1000 tane oluştur demiş oluyoruz. 2011.01.01 den günümüze(2012.10.05) yaklaşık 645 gün olduğu için max recursion sayısına ulaşamayız. Eğer bu değeri düzgn vermez isek aşağıdaki hatayı alırız.Msg 530, Level 16, State 1, Line 1
The statement terminated. The maximum recursion 1000 has been exhausted before statement completion.İki Tarih Arasındaki tüm Günler için Seri Oluşturmak
12345678910WITHT(Date)AS(SELECTCONVERT(datetime,'20110101')DateUNIONALLSELECTDATEADD(dd, 1,Date)FROMTWHEREDate< GETDATE())SELECT*FROMTOPTION(MAXRECURSION 1000)
5 Ekim 2012 Cuma
TSQL ile Belirli bir Sayı veya Tarih Aralığında Bir Seri Üretmek
9 Eylül 2012 Pazar
Sql'de Linked Server Olmadan Uzaktaki Sunucuya Bağlantı
Bildiğiniz gibi LinkedServer tanımlayarak A server’ı üzerinden B Server’ında select,update gibi işlemleri yapabilmemiz mümkün.
Bugün anlatacağım OpenDataSource komutu ile linked server’a gerek kalmadan bu işlemleri nasıl yapabileceğimizi görüyor olacağız.
OpenDataSource kullanılabilmesi için sorguyu çalıştıran server’da Ad Hoc Distributed Queriesözelliğinin enable edilmesi gerekmektedir.
Aksi halde şöyle bir hata alınır.
Msg 15281, Level 16, State 1, Line 1
SQL Server blocked access to STATEMENT 'OpenRowset/OpenDatasource' of component 'Ad Hoc Distributed Queries' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'Ad Hoc Distributed Queries' by using sp_configure. For more information about enabling 'Ad Hoc Distributed Queries', see "Surface Area Configuration" in SQL Server Books Online.
SQL Server blocked access to STATEMENT 'OpenRowset/OpenDatasource' of component 'Ad Hoc Distributed Queries' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'Ad Hoc Distributed Queries' by using sp_configure. For more information about enabling 'Ad Hoc Distributed Queries', see "Surface Area Configuration" in SQL Server Books Online.
Ad Hoc Distributed Queries özelliğini aktif etmek için sorguyu çalıştıran server’da şu script’i çalıştırabilirsiniz.
1 | exec sp_configure 'show advanced options',1 |
2 | ReConfigure with override |
3 | exec sp_configure 'Ad Hoc Distributed Queries',1 |
4 | ReConfigure with override |
5 | exec sp_configure 'show advanced options',0 |
6 | ReConfigure with override |
Şimdi kullanıma bakalım.
1 | SELECT top 10 * FROM OPENDATASOURCE( 'SQLOLEDB', |
2 | 'Data Source=Server2\sql2008;User ID=LoginName;Password=Password').ADRES.dbo.IL |
SQL Server Management Stdio Üzerinde Kullanıcıların Görebildikleri Veritabanı Listesini Kısıtlamak
SQL Server güvenliğinde sık karşılaştığımız sorulardan biri de kullanıcının yetkisi olmadığı halde SQL Server Management Stdio kullanarak SQL Servera bağlandıklarında tüm veritabanlarını görmelerinin nedenidir. Aslında bu durum SQL Server ile doğrudan ilişkili değildir. SQL Serverı yönetmek için kullandığımız araç olan SQL Server Management Stdio aracının tasarımı yapılırken hızlı açılabilmesi için dinamik olarak oluşturulan ve SQL Server objelerinin listelendiği Object Explorer penceresi oluşturulduğunda herhangi bir kontrol yapılması şeklinde tasarlanmıştır. Hatta yetkiden bağımsız olarak kimsenin erişmeyeceği Offline durumdaki veritabanları bile kontrol edilmeden listelenmektedir.
Daha teknik bir ifadeyle konuyu açıklayacak olursak SQL Server her kullanıcımızın üye olduğu public adında bir rol vardır ve varsayılan olarak bu role VIEW ANY DATABASE yetkisi verilmiştir. Yani bu role sahip her kullanıcı yetkisi olmasa bile erişim hakkı olmaz ama tüm veritabanlarının listesini Object Explorer penceresinde görebilmektedir. Bu nedenle eğer tüm kullanıcılardan veritabanı listesinin gizlemek istiyorsak public rolünden bu yetkiyi almamız gerekmektedir. Aynı şekilde sadece bir kullanıcıdan da bu yetkiyi alarak sadece bir kullanıcının tüm veritabanları görmesini engelleyebiliriz. Şimdi hemen bir uygulama üzerinde bu işlemi yapalım. İlk adım olarak bir kullanıcı oluşturalım ve hiç yetki vermeyelim.
8 Eylül 2012 Cumartesi
SQL'de Insert Yöntemleri
Sql Üzerinde birden fazla Insert Yöntemi vardır. Bu her farklı yöntem doğru kullanılırsa hayat kurtarmakta üzerine yoktur. Metod 1'i sql'e tek veri eklemekte kullanabilirsiniz, Metod 2'yi ise farklı tablo veya view ile insert yapmakta kullanabilirsiniz Metod 3 ise visual studio ile aktarımda yardımınıza koşacaktır. İşte size örnekler;
-- Sql Server'a Temp Tablo açılmasıCREATE TABLE #SQLTempTable (ID INT, Value VARCHAR(100));
Method 1: Traditional Method of INSERT…VALUE
-- Method 1 - Genel Insert KullanımıINSERT INTO #SQLTempTable (ID, Value)VALUES (1, 'First');INSERT INTO #SQLTempTable (ID, Value)VALUES (2, 'Second');INSERT INTO #SQLTempTable (ID, Value)VALUES (3, 'Third');-- TemizlemeTRUNCATE TABLE #SQLTempTable;-------------------------------------------------------------------------------
Method 2: INSERT…SELECT
-- Method 2 - Select Union Insert YöntemiINSERT INTO #
SQLTempTable (ID, Value)SELECT 1, 'First' UNION ALL SELECT 2, 'Second' UNION ALL SELECT 3, 'Third';-- Temizleme TRUNCATE TABLE #SQLTempTable;------------------------------------------------------------------------------
Method 3: SQL Server 2008+ Row Construction
-- Method 3 - SQL Server 2008+ Row Construction YöntemiINSERT INTO #SQLTempTable (ID, Value)VALUES (1, 'First'), (2, 'Second'), (3, 'Third');-- Temizleme DROP TABLE #SQLTempTable;Raporlarda TL yazıyla Kullanımı (Rakamı Yazıya Çevirir)
Crystal Reports'ta Rakam gelen alanları yazıya çevirmek bazen işkence olabiliyor ama bununda kolayı var tabi ki yeni bir formul ekliyorsunuz ve aşağıdaki kodları yapıştırıyorsunuz. Burada tek yapmanız gereken Formul eklerken Syntax'ı "Crystal Syntax"'tan "Basic Syntax"'a çevirmek olacaktır.
Dim SencerDegisken As Number
Dim SolTaraf As String
Dim SagTaraf As String
Dim SolYuzler As String
Dim SolOnlar As String
Dim SolOnlarbas As String
Dim SolBirler As String
Dim SolDüzeltme As String
Dim SagYuzler As String
Dim SagOnlar As String
Dim SagOnlarbas As String
Dim SagBirler As String
Dim SagDüzeltme As String
SencerDegisken = Sum ({@TOPLAM})
Sql Serverda Tablo Kopyalamak
Sql Serverda herhangi bir veri tabanındaki bir tabloyu, başka bir veritabanına taşımak için;
SELECT * INTO vt1.dbo.yenitablo FROM vt2.dbo.kopyalanacaktablo
şeklinde bir komut kullanılabilir. Bu komut ile vt1 veritabanı altına yenitablo isimli bir tablo oluşturulur ve vt2 veritabanındaki kopyalanacaktablo isimli tablodaki veriler bu tabloya taşınır.
Sql'de Var Olan Tabloları Coloumları ve Viewları Listelemek
Sql'de olan Tabloları ve Viewları listelemek ve bunlarla dinamik bir yapı oluşturmak istiyorsanız bu iki komut sizin hayatınızı kurtaracaktır. Tablo ve Veiw'lar hakkında daha fazla bilgi isterseniz eğer "name" yerine "*" kullanmanız yeterli olacaktır.
SELECT name FROM sys.tables
SELECT name FROM sys.viewsEğer Database ile birlikte tablo isimlerini listelemek isterseniz;
SELECT * FROM INFORMATION_SCHEMA.TablesEğer Coloum isimleri ile birlikte tablo isimlerini listelemek isterseniz;
SELECT t.name As TableName, c.Column_Name
from sys.tables t
INNER JOIN INFORMATION_SCHEMA.COLUMNS c ON c.Table_Name = t.Name
ORDER BY t.name
c# ile temp dizinine ulaşmak
C# ile Temp dizini yolunu almak.(Getting temp directory active user wtih c#)
Programı kurduğunuz bilgisayarda temp dizinine ulaşmanız gerekbilir.Her bilgisayarda temp dizini aynı path'a sahip değildir. administrator seçeneğini ise her zaman kullanamayabiliriz.Çünkü erişim iznimiz olamayabilir.
Allusers seçeneği ise her kullanıcıya açık hale getirecektir.Bunun yerine aktif kullanıcının temp dizinine ulaşmak için şu iki seçenekten biriniz kullanabilirsiniz.
string tempPath = System.IO.Path.GetTempPath();ya da
string strTmp= System.Environment.GetEnvironmentVariable("TEMP");seçenklerinden biri ile elde edebiliriz.
SQL Server 2012 , 2008 ve 2008 R2'de veritabanı log dosyasını temizleme - boyutunu düşürme
Yönettiğim sistemlerde SQL veritabanlarında log yedeği (log backup) alabilmek ve gerektiğinde belirli bir zaman geri dönebilmek için recovery model olarak Full seçiyorum.
Bir veritabanının recovery modelini SQL Server 2000'de SQL Server Enterprise Manager, SQL Server 2005/2008/2008 R2/2012'de SQL Server Management Studio'da veritabanına sağ tıklayıp Properties'e basıldığında görüntülenen ekranda yeralan Options bölümünden ayarlayabiliyoruz.
Recovery modelin Full olması, özellikle üzerinde çok fazla değişiklik gerçekleşen veritabanlarında bir süre sonra log dosyası boyutunun çok büyümesine, hatta veritabanının boyutunu geçmesine neden olabiliyor. Veritabanının yedeğini düzenli olarak alıyorsanız log dosyasını arada bir temizlemek hem diskte yer kaplaması açısından hem de veritabanının performansı açısından önemlidir.
SQL Server 2000 ve 2005 versiyonlarında aşağıdaki komutlar ile veritabanı log dosyasının boyutunu sıfırlamak mümkün :
USE veritabaniadi GO BACKUP LOG veritabaniadi WITH TRUNCATE_ONLY DBCC SHRINKFILE(veritabaniadi_log) GOAncak bu işlemi SQL Server 2008 ve 2008 R2 versiyonlarında gerçekleştirmek istediğiniz aşağıdaki hata mesajı ile karşılaşıyoruz : Msg 155, Level 15, State 1, Line 1 'TRUNCATE_ONLY' is not a recognized BACKUP option. Bu hatanın sebebi, artık TRUNCATE_ONLY komutunun desteklenmiyor olması. Peki, SQL Server 2008 ve 2008 R2'de log dosyasını temizlemek için var mı? Elbette var! Aşağıdaki komutlar ile veritabanı log dosyasını temizleyebiliyoruz :
USE veritabaniadi GO ALTER DATABASE veritabaniadi SET RECOVERY SIMPLE WITH NO_WAIT DBCC SHRINKFILE(veritabani_log) ALTER DATABASE veritabaniadi SET RECOVERY FULL WITH NO_WAIT GOBu komutlarla yaptğımız işlem recovery modeli Simple olarak değiştirmek, log dosyasını temizlemek ve recovery modeli tekrar Full olarak değiştirmek. NOT : DBCC SHRINKFILE(veritabani_log) satırlarında geçen veritabani_log kısmı veritabanının log dosyasının adıdır. Fiziksel dosya adı ile aynı olmayabilir. Bu adı veritabanının Properties ekranındaki Files bölümündeki Logical Name kısmından veya aşağıdaki komutları çalıştırıp ekrana gelen sonuçtaki Name bölümünden görebilirsiniz.
USE veritabaniadi GO SELECT * FROM sys.database_files
30 Eylül 2010 Perşembe
Referanslara System.Core Ekleme
Referencing System.Core
Create new .NET 2.0 project just like in the previous section.
Right-click on the project in Solution Explorer and select "Unload Project"
Right-click on the project again again and select "Edit [ProjectName]". You should see XML document now.
Find the references section that could look like this:
<reference include="System">
<reference include="System.Data">
<reference include="System.Xml">
Manually append reference to System.Core.dll:
<reference include="System.Core">
<private>True</private>
</reference>
Save.
Right-click on the project in Solution Explorer again and select "Reload"
Congratulations. You can now use some .NET 3.5 features in your project, while still having a .NET 2.0 requirement.
Create new .NET 2.0 project just like in the previous section.
Right-click on the project in Solution Explorer and select "Unload Project"
Right-click on the project again again and select "Edit [ProjectName]". You should see XML document now.
Find the references section that could look like this:
<reference include="System">
<reference include="System.Data">
<reference include="System.Xml">
Manually append reference to System.Core.dll:
<reference include="System.Core">
<private>True</private>
</reference>
Save.
Right-click on the project in Solution Explorer again and select "Reload"
Congratulations. You can now use some .NET 3.5 features in your project, while still having a .NET 2.0 requirement.
22 Ekim 2009 Perşembe
Bunlar Pil Değil!
Antrepo ekibi son yıllarda popülerleşen minimalistik tuzluk-karabiberlik tasarımlarını sevdiklerini söylüyor, ama biraz endüstriyel dokunuşun ihtiyacını hissederek işe koyuluyorlar. Daha önce Timetuner, Minutuner ve Tunertime gibi başka şeylere benzeyen ürünlerin sonuncusu yemek masanız için!.
Salt & Pepper Cell adlı tasarımları, birebir D size pil boyutunda. Hani şu en büyük pillerden. Üstelik göstergesinden doldurma zamanını da öğrenebiliyorsunuz. Tuzluğun gövdesi cam, üst yüzeyi ise paslanmaz çelik olarak düşünülmüş!
6 Ekim 2009 Salı
Dell Kablosuz Şarj Olabiliyor!
Cep telefonlarında görülen kablosuz sarj özelliği şimdi de dizüstü bilgisayarlara şıçradı.
Firmanın yaptığı açıklamaya göre Z serisi Latitude modeli, üzerinde bulundukları bir
Kaydol:
Kayıtlar (Atom)
