Tag Archives: Sql

SQL serverdə cədvəl və kolon adlarını axtarmaq


Bəzən SQL Serverdə cədvəl və kolonları axtarmaq ehtiyacı olur belə bir kodla istədiyimiz cədvəlin vəya kolonun harda yerləşdiyini tapa bilərik.

-- Cədvəl üçün
select*from INFORMATION_SCHEMA.tables where table_name like '%AxtaracağımızSöz%'
-- Kolon üçün
 select*from INFORMATION_SCHEMA.columns where Column_name like '%AxtaracağımızSöz%'

C# Combobox içərsini sorğu ilə doldurmaq


Form üzərində combobox var və biz bunu sql serverə sorğu göndərərək gələn nəticəni combobox içərsində göstərmək istəyirik aşağdakı yolu izliyirik,əvvəlcə verilənlərbazasına bağlanırıq sorğumuzu işlədirik və gələn nəticəni SqlDataReader ilə oxuyuruq və combobox`un içərsinə mənimsədirik.

 SqlCommand cmd = new SqlCommand("select * from CədvəlAdı WHERE ID ='1'", con);
 SqlDataReader oxu;
 oxu = cmd.ExecuteReader();
 if (oxu != null)
 {
 while (oxu.Read())
 {
 combobox1.Items.Add(oxu["Adlar"].ToString()); //Burda hansı column dəğərləri gələcə o column adını yazırıq.
 }
 oxu.Close();
 }

SQL Server Suspect Data qurtarmaq


SQL Serverdə Suspect olmuş verilənlərbazasını bu yolla bir neçə dəfə qurtarmışam.Bu yolu mütləq yoxlayın çox halldarda işləyir.

Test olunub SQL Server 2008 R2

EXEC SP_RESETSTATUS 'VerilənlərbazasıAdı'
ALTER DATABASE VerilənlərbazasıAdı SET EMERGENCY
DBCC CHECKDB('VerilənlərbazasıAdı')
ALTER DATABASE VerilənlərbazasıAdı SET SINGLE_USER WITH ROLLBACK IMMEDIATE
DBCC CHECKDB ('VerilənlərbazasıAdı', REPAIR_ALLOW_DATA_LOSS)
ALTER DATABASE VerilənlərbazasıAdı SET MULTI_USER

SQL server 2000 üçün :

USE master;
GO
EXEC sp_resetstatus 'VerilənlərbazasıAdı';
GO
USE VerilənlərbazasıAdı;
DBCC CHECKDB WITH NO_INFOMSGS;
GO

İki cədvəli qarşılaşdırıb UPDATE etmə


2 ayrı tabloda bir İD sahib columnları qarşıladırıb bir tablodan digərinə update etmək üçün belə bir qısa sorğu

UPDATE
Tablo1  -- bu update olunacaq tablo
SET
Tablo1.Column1 = Tablo2.Column2  --  Tablo1 dən Tablo2 yə update olunacaq columnlar
FROM
Tablo1
INNER JOIN
Tablo2
ON
Tablo2.ID = Tablo1.ID -- burda ID lərin bərabər olanları update etsin şərti
--bundan sonra where şertide qoya bilərsiz
where tablo2.ID='5'

Verilənlər bazasında axtarış


Salam
Bəzən programda gördüyünüz sözü bütün verilənlərbazasında axtarıb yerləşdiyi tablonu öyrənmək istəyirsiz,əvvəlcə stored procedure yaradırıq sonra işlədirik.

--- sp yaradırıq
CREATE PROC SearchAllTables
(
@SearchStr nvarchar(100)
)
AS
BEGIN

CREATE TABLE #Results (ColumnName nvarchar(370), ColumnValue nvarchar(3630))

SET NOCOUNT ON

DECLARE @TableName nvarchar(256), @ColumnName nvarchar(128), @SearchStr2 nvarchar(110)
SET  @TableName = ''
SET @SearchStr2 = QUOTENAME('%' + @SearchStr + '%','''')

WHILE @TableName IS NOT NULL
BEGIN
SET @ColumnName = ''
SET @TableName =
(
SELECT MIN(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME))
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
AND QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) > @TableName
AND OBJECTPROPERTY(
OBJECT_ID(
QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME)
), 'IsMSShipped'
) = 0
)

WHILE (@TableName IS NOT NULL) AND (@ColumnName IS NOT NULL)
BEGIN
SET @ColumnName =
(
SELECT MIN(QUOTENAME(COLUMN_NAME))
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = PARSENAME(@TableName, 2)
AND TABLE_NAME = PARSENAME(@TableName, 1)
AND DATA_TYPE IN ('char', 'varchar', 'nchar', 'nvarchar')
AND QUOTENAME(COLUMN_NAME) > @ColumnName
)

IF @ColumnName IS NOT NULL
BEGIN
INSERT INTO #Results
EXEC
(
'SELECT ''' + @TableName + '.' + @ColumnName + ''', LEFT(' + @ColumnName + ', 3630)
FROM ' + @TableName + ' (NOLOCK) ' +
' WHERE ' + @ColumnName + ' LIKE ' + @SearchStr2
)
END
END
END
SELECT ColumnName, ColumnValue FROM #Results
END

indi isə sp çalışdırırıq

EXEC SearchAllTables 'AxtarlılacaqSöz'
GO