Berikut saya akan berikan cara untuk mengecek apakah suatu tabel ada atau tidak di dalam database SQL Server.
Dalam contoh ini saya akan berikan sebuah stored procedure yang mana di dalam stored procedure ini akan melakukan pengecekan keberadaan tabel tersebut.
Create procedure sp_Dpomproduk
@desc as nvarchar(10),
@unit as nvarchar(5)
as
if exists(select * from dbo.sysobjects where id = object_id(N'[dbo].Dpomproduk]')
and OBJECTPROPERTY(id, N'IsTable') = 1)
drop table[dbo].[Dpomproduk]
Keterangan script di atas adalah
klausa exists untuk mengecek saat melakukan select pada object tabel Dpomproduk terdapat di dalam tabel dbo.sysobejcts dan apakah objectproperty-nya bernilai 1 atau 0. Jika bernilai 1, maka tabel dpomproduk yang lama akan dihapus dengan menggunakan perintah drop table[dbo].[Dpomproduk]
Demikian sedikit cara yang dapat saya bagikan kepada para pembaca.GBU
Sabtu, 16 April 2011
Jumat, 15 April 2011
String manipulation in SQL Server
Terkadang kita membutuhkan manipulasi nilai string menggunakan T-SQL code (bahasa SQL yang digunakan oleh SQL Server). Beberapa bahasa pemrograman seperti Visual Basic, C++, C#, VBScript, dan lain-lain mempunyai banyak perintah (commands) untuk kita melakukan manipulasi nilai string. Di SQL Server ada beberapa perintah yang dapat digunakan untuk melakukan manipulasi beberapa nilai string.
Sumber diambil ari internet
Command | Description |
CHARINDEX(findTextData, TextData, [startingPosition]) | Menghasilkan posisi start dari string (findTextData) di dalam TextData. startingPosition sifatnya optional |
LEFT(character_expression, integer_expression) | Menghasilkan posisi dari kiri sebuah karakter string sebanyak n (integer_expression) |
LEN(TextData) | Menghasilkan nilai integer panjang dari suatu string |
LOWER(character_expression) | Menghasilkan string yang berisi karakter huruf kecil |
LTRIM(textData) | Menghilangkan awalan yang berisi whitespace or blanks |
PATINDEX(findTextData, textData) | Menghasilkan nilai integer posisi start |
REPLACE(textData, findTextData, replaceWithTextData) | Mengganti text yang ditemukan di dalam string dengan suatu nilai string |
REPLICATE(character_expression, integer_expression) | Mengulang character_expression sebanyak n kali |
REVERSE(character_expression) | Menghasilkan pembalikan character expression |
RTRIM(textData) | Menghilangkan trailing blanks |
SPACE(numberOfSpaces) | Mengulang spasi sebanyak n kali (n diwakili oleh number of spaces) |
STUFF(textData, start, length, insertTextData) | menghapus panjang karakter dan menyisipkannya dengan sejumlah karakter pada posisi start |
SUBSTRING(textData, startPosition, length) | Menghasilkan nilai string yang diambil dari posisi start sampai posisi length |
UPPER(character_expression) | menghasilkan string yang berisi huruf besar semua |
Sumber diambil ari internet
Senin, 28 Maret 2011
Konsep Himpunan dalam SQL
1. Pemakaian INNER JOIN
Seandainya kita mempunyai 2 ( dua ) himpunan :
A = {’1001′, ’1002′, ’1003′, ’1004′, ’1005′}
B = {’1002′, ’1004′, ’1006′, ’1007′}
Maka anggota A dan B adalah C = {’1002′, ’1004′}
Jadi C merupakan irisan dari himpunan A dan B
Dan bentuk perintah SQL menjadi
SELECT* FROM A INNER JOIN B ON A.KODE = B.KODE
Jadi A dan B dihubungan dengan field yang bernama KODE dimana isi dari kode tersebut merupakan anggota dari suatu himpunan.
2. Pemakaian LEFT JOIN
Pemakaian perintah ini memang agak susah dipahami kalau kita tidak bergelut di bidang programming, walaupun agak jarang dipakai tetapi ada kalanya kita harus memakai perintah ini, tujuannya agar semua data utama (A) ditampilkan semua sedangkan data B yang diperlukan atau ditampilkan adalah field-field kedua yang muncul akibat dari relasi tersebut. Akan saya coba terangkan dengan konsep Himpunan.
A = {’1001′, ’1002′, ’1003′, ’1004′, ’1005′}
B = {’1002′, ’1004′, ’1006′, ’1007′}
Dari 2 ( dua ) himpunan tersebut kalau kita memakai LEFT JOIN hasilnya
C = {’1001′, ’1002′, ’1003′, ’1004′, ’1005′}
3. Pemakaian RIGHT JOIN
Ini adalah kebalikan dari pemakaian LEFT JOIN, Perintah RIGHT JOIN ini hampir-hampir tidak pernah dipakai artinya sangat jarang sekali dipakai. Dan bentuk himpunannya adalah sebagai berikut :
A = {’1001′, ’1002′, ’1003′, ’1004′, ’1005′}
B = {’1002′, ’1004′, ’1006′, ’1007′}
Dari 2 ( dua ) himpunan tersebut kalau kita memakai RIGHT JOIN hasilnya
C = {’1002′, ’1004′, ’1006′, ’1007′}
Tulisan di atas saya peroleh dari internet, maaf saya lupa mencantumkan sumbernya :)
Seandainya kita mempunyai 2 ( dua ) himpunan :
A = {’1001′, ’1002′, ’1003′, ’1004′, ’1005′}
B = {’1002′, ’1004′, ’1006′, ’1007′}
Maka anggota A dan B adalah C = {’1002′, ’1004′}
Jadi C merupakan irisan dari himpunan A dan B
Dan bentuk perintah SQL menjadi
SELECT* FROM A INNER JOIN B ON A.KODE = B.KODE
Jadi A dan B dihubungan dengan field yang bernama KODE dimana isi dari kode tersebut merupakan anggota dari suatu himpunan.
2. Pemakaian LEFT JOIN
Pemakaian perintah ini memang agak susah dipahami kalau kita tidak bergelut di bidang programming, walaupun agak jarang dipakai tetapi ada kalanya kita harus memakai perintah ini, tujuannya agar semua data utama (A) ditampilkan semua sedangkan data B yang diperlukan atau ditampilkan adalah field-field kedua yang muncul akibat dari relasi tersebut. Akan saya coba terangkan dengan konsep Himpunan.
A = {’1001′, ’1002′, ’1003′, ’1004′, ’1005′}
B = {’1002′, ’1004′, ’1006′, ’1007′}
Dari 2 ( dua ) himpunan tersebut kalau kita memakai LEFT JOIN hasilnya
C = {’1001′, ’1002′, ’1003′, ’1004′, ’1005′}
3. Pemakaian RIGHT JOIN
Ini adalah kebalikan dari pemakaian LEFT JOIN, Perintah RIGHT JOIN ini hampir-hampir tidak pernah dipakai artinya sangat jarang sekali dipakai. Dan bentuk himpunannya adalah sebagai berikut :
A = {’1001′, ’1002′, ’1003′, ’1004′, ’1005′}
B = {’1002′, ’1004′, ’1006′, ’1007′}
Dari 2 ( dua ) himpunan tersebut kalau kita memakai RIGHT JOIN hasilnya
C = {’1002′, ’1004′, ’1006′, ’1007′}
Tulisan di atas saya peroleh dari internet, maaf saya lupa mencantumkan sumbernya :)
Script Backup and Restore Database untuk SQL Server 2k/2k5
Berikut saya copykan script untuk backup database SQL Server baik SQL Server 2000 maupun SQL Server 2005
DECLARE @name VARCHAR(50) -- database name
DECLARE @path VARCHAR(256) -- path for backup files
DECLARE @fileName VARCHAR(256) -- filename for backup
DECLARE @fileDate VARCHAR(20) -- used for file name
SET @path = 'C:\Backup\'
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112)
DECLARE db_cursor CURSOR FOR
SELECT name
FROM master.dbo.sysdatabases
WHERE name NOT IN ('master','model','msdb','tempdb')
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @fileName = @path + @name + '_' + @fileDate + '.BAK'
BACKUP DATABASE @name TO DISK = @fileName
FETCH NEXT FROM db_cursor INTO @name
END
CLOSE db_cursor
DEALLOCATE db_cursor
Keterangan :
@path berisi tempat lokasi file backup akan diletakkan.
Berikut saya copykan script untuk merestore database SQL Server baik 2000 maupun 2005
USE Master;
GO
SET NOCOUNT ON
-- 1 - Variable declaration
DECLARE @dbName sysname
DECLARE @backupPath NVARCHAR(500)
DECLARE @cmd NVARCHAR(500)
DECLARE @fileList TABLE (backupFile NVARCHAR(255))
DECLARE @lastFullBackup NVARCHAR(500)
DECLARE @lastDiffBackup NVARCHAR(500)
DECLARE @backupFile NVARCHAR(500)
-- 2 - Initialize variables
SET @dbName = 'Customer'
SET @backupPath = 'D:\SQLBackups\'
-- 3 - get list of files
SET @cmd = 'DIR /b ' + @backupPath
INSERT INTO @fileList(backupFile)
EXEC master.sys.xp_cmdshell @cmd
-- 4 - Find latest full backup
SELECT @lastFullBackup = MAX(backupFile)
FROM @fileList
WHERE backupFile LIKE '%.BAK'
AND backupFile LIKE @dbName + '%'
SET @cmd = 'RESTORE DATABASE ' + @dbName + ' FROM DISK = '''
+ @backupPath + @lastFullBackup + ''' WITH NORECOVERY, REPLACE'
PRINT @cmd
-- 4 - Find latest diff backup
SELECT @lastDiffBackup = MAX(backupFile)
FROM @fileList
WHERE backupFile LIKE '%.DIF'
AND backupFile LIKE @dbName + '%'
AND backupFile > @lastFullBackup
-- check to make sure there is a diff backup
IF @lastDiffBackup IS NOT NULL
BEGIN
SET @cmd = 'RESTORE DATABASE ' + @dbName + ' FROM DISK = '''
+ @backupPath + @lastDiffBackup + ''' WITH NORECOVERY'
PRINT @cmd
SET @lastFullBackup = @lastDiffBackup
END
-- 5 - check for log backups
DECLARE backupFiles CURSOR FOR
SELECT backupFile
FROM @fileList
WHERE backupFile LIKE '%.TRN'
AND backupFile LIKE @dbName + '%'
AND backupFile > @lastFullBackup
OPEN backupFiles
-- Loop through all the files for the database
FETCH NEXT FROM backupFiles INTO @backupFile
WHILE @@FETCH_STATUS = 0
BEGIN
SET @cmd = 'RESTORE LOG ' + @dbName + ' FROM DISK = '''
+ @backupPath + @backupFile + ''' WITH NORECOVERY'
PRINT @cmd
FETCH NEXT FROM backupFiles INTO @backupFile
END
CLOSE backupFiles
DEALLOCATE backupFiles
-- 6 - put database in a useable state
SET @cmd = 'RESTORE DATABASE ' + @dbName + ' WITH RECOVERY'
PRINT @cmd
Kedua script tersebut saya dapatkan di internet dan saya coba sudah berhasil, silahkan untuk diaplikasin.
DECLARE @name VARCHAR(50) -- database name
DECLARE @path VARCHAR(256) -- path for backup files
DECLARE @fileName VARCHAR(256) -- filename for backup
DECLARE @fileDate VARCHAR(20) -- used for file name
SET @path = 'C:\Backup\'
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112)
DECLARE db_cursor CURSOR FOR
SELECT name
FROM master.dbo.sysdatabases
WHERE name NOT IN ('master','model','msdb','tempdb')
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @fileName = @path + @name + '_' + @fileDate + '.BAK'
BACKUP DATABASE @name TO DISK = @fileName
FETCH NEXT FROM db_cursor INTO @name
END
CLOSE db_cursor
DEALLOCATE db_cursor
Keterangan :
@path berisi tempat lokasi file backup akan diletakkan.
Berikut saya copykan script untuk merestore database SQL Server baik 2000 maupun 2005
USE Master;
GO
SET NOCOUNT ON
-- 1 - Variable declaration
DECLARE @dbName sysname
DECLARE @backupPath NVARCHAR(500)
DECLARE @cmd NVARCHAR(500)
DECLARE @fileList TABLE (backupFile NVARCHAR(255))
DECLARE @lastFullBackup NVARCHAR(500)
DECLARE @lastDiffBackup NVARCHAR(500)
DECLARE @backupFile NVARCHAR(500)
-- 2 - Initialize variables
SET @dbName = 'Customer'
SET @backupPath = 'D:\SQLBackups\'
-- 3 - get list of files
SET @cmd = 'DIR /b ' + @backupPath
INSERT INTO @fileList(backupFile)
EXEC master.sys.xp_cmdshell @cmd
-- 4 - Find latest full backup
SELECT @lastFullBackup = MAX(backupFile)
FROM @fileList
WHERE backupFile LIKE '%.BAK'
AND backupFile LIKE @dbName + '%'
SET @cmd = 'RESTORE DATABASE ' + @dbName + ' FROM DISK = '''
+ @backupPath + @lastFullBackup + ''' WITH NORECOVERY, REPLACE'
PRINT @cmd
-- 4 - Find latest diff backup
SELECT @lastDiffBackup = MAX(backupFile)
FROM @fileList
WHERE backupFile LIKE '%.DIF'
AND backupFile LIKE @dbName + '%'
AND backupFile > @lastFullBackup
-- check to make sure there is a diff backup
IF @lastDiffBackup IS NOT NULL
BEGIN
SET @cmd = 'RESTORE DATABASE ' + @dbName + ' FROM DISK = '''
+ @backupPath + @lastDiffBackup + ''' WITH NORECOVERY'
PRINT @cmd
SET @lastFullBackup = @lastDiffBackup
END
-- 5 - check for log backups
DECLARE backupFiles CURSOR FOR
SELECT backupFile
FROM @fileList
WHERE backupFile LIKE '%.TRN'
AND backupFile LIKE @dbName + '%'
AND backupFile > @lastFullBackup
OPEN backupFiles
-- Loop through all the files for the database
FETCH NEXT FROM backupFiles INTO @backupFile
WHILE @@FETCH_STATUS = 0
BEGIN
SET @cmd = 'RESTORE LOG ' + @dbName + ' FROM DISK = '''
+ @backupPath + @backupFile + ''' WITH NORECOVERY'
PRINT @cmd
FETCH NEXT FROM backupFiles INTO @backupFile
END
CLOSE backupFiles
DEALLOCATE backupFiles
-- 6 - put database in a useable state
SET @cmd = 'RESTORE DATABASE ' + @dbName + ' WITH RECOVERY'
PRINT @cmd
Kedua script tersebut saya dapatkan di internet dan saya coba sudah berhasil, silahkan untuk diaplikasin.
Langganan:
Postingan (Atom)