PDA

View Full Version : یکسری از دستورات sql



baran_2005
یک شنبه 02 اسفند 1388, 10:25 صبح
در اینجا یکسری از دستورات sql گذاشتم که در کدنویسی کاربردهای زیادی دارند و من تنها نمونه ای از انها رو اوردم . help نرم افزار sql server اطلاعات بیشتری را در اختیار شما قرار میدهد . به امید انکه مورد استفاده دوستان قرار گیرد .

یافتن نام Instance فعال


SELECT CONVERT(char(20), SERVERPROPERTY('servername')) as Instance Name


یافتن نام سیستم


SELECT CONVERT(char(20), SERVERPROPERTY('MachineName') ) as serverName

SERVERPROPERTY دارای پارامترهای زیادی است که با تغییر ان می توان اطلاعات زیادی به دست اورد .

یافتن نام database

برای پیدا کردن نام database از این دستور می توانید استفاده کنید که ارگمانهای زیادی دارد . information_schema این دستور کاربردهای بیشتری دارد که با جستجوی بیشتر اطلاعات بیشتری پیدا میکنید .


SELECT table_catalog'tablecatalog' FROM information_schema.columns WHERE table_name = 'نام جدول'


یافتن نام فیلدها ، نوع ، سایز و...


SELECT column_name 'Column Name',
data_type 'Data Type',
CHARacter_maximum_length 'Maximum Length'
FROM information_schema.columns
WHERE table_name = 'نام جدول'


فارسی کردن فیلدها

برای این کار می توان از قسمت توضیحات که در زمان طراحی برای هر فیلد وجود دارد استفاده کرد . در این حالت نام فیلدها را به همراه فیلد توضیحات برای شما می اورد .


select a.value,b.name from sysproperties a full Join syscolumns b
on )a.smallid=b.colid) and ( a.id=b.id ) where
b.id in (Select id from sysobjects where name ='نام جدول'(


یافتن refrence های یک جدول

اگر یک جدول به چنیدین جدول دیگر ارتباط داشته باشد برای فهمیدن این موضوع از دستور زیر استفاده کنید .



select * from sysobjects where parent_obj in )select id from sysobjects where name='نام جدول'(
select * from sysreferences where Constid=' ای دی نتیجه قبل را قرار میدهیم در اینجا ' --constid in refrences = id into sysobjects
select * from sysobjects where id=' rkeyid نتیجه قبل را گذاشت در اینجا باید '


برقراری ارتباط بین دو instance

برای این کار در خود sql در قسمت security بر روی Linked Server کلیک راست کرده و گزینه New Linked Server را میزنیم در سربرگ General در مکان Linked Server نام سروری را که می خواهیم به ان متصل شویم را وارد میکنیم و از قسمت Server Type باید Sql Server را انتخاب کنیم و در سربرگ security قسمت Be Made using this security contex را انتخاب و در قسمت Remote login کلمه sa و در قسمت With password کلمه عبور خود را وارد کنید این کار را در هر دو instance انجام دهید . این عمل را با کد زیر نیز می توانید انجام دهید به جای instance name نام instance خود را بگذارید .


USE master
GO
EXEC sp_addlinkedserver
'instance name',
N'SQL Server'
GO

و یا به صورت



USE master
GO
EXEC sp_addlinkedserver
'instance name',
'',
'MSDASQL',
NULL,
NULL,
'DRIVER={SQL Server};SERVER=MyServer;UID=sa;PWD=;'
GO


حالا ازinstance که در ان قرار دارید به instance دیگری که لینک شده اید دسترسی دارید به عنوان مثال :



select * from[instance name].database name .dbo.table name
select * from [server\Test].Anbar.dbo.test2



براقراری ارتباط با اراکل


USE master
GO
-- To use named parameters:
EXEC sp_addlinkedserver
@server = 'LONDON Mktg',
@srvproduct = 'Oracle',
@provider = 'MSDAORA',
@datasrc = 'MyServer'
GO
-- OR to use no named parameters:
USE master
GO
EXEC sp_addlinkedserver
'LONDON Mktg',
'Oracle',
'MSDAORA',
'MyServer'
GO

pezhvakco
یک شنبه 02 اسفند 1388, 10:34 صبح
درود :
خوبه و دستت درد نکنه ...
زحمت کشیدی .

baran_2005
دوشنبه 03 اسفند 1388, 16:33 عصر
یافتن نام فیلدهای کلید



use نام دیتابیس
go
select c.name
from sysindexes i
join sysobjects o ON i.id = o.id
join sysobjects pk ON i.name = pk.name
AND pk.parent_obj = i.id
AND pk.xtype = 'PK'
join sysindexkeys ik on i.id = ik.id
and i.indid = ik.indid
join syscolumns c ON ik.id = c.id
AND ik.colid = c.colid
where o.name = 'نام جدول'
order by ik.keyno

baran_2005
دوشنبه 03 اسفند 1388, 16:53 عصر
اطلاعات کاملی در باره رابطه جداول به ما میدهد که با چه کلیدهای خارجی جداول در ارتباط است

SELECT
FK_Table = FK.TABLE_NAME,
FK_Column = CU.COLUMN_NAME,
PK_Table = PK.TABLE_NAME,
PK_Column = PT.COLUMN_NAME,
Constraint_Name = C.CONSTRAINT_NAME
FROM
INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS C
INNER JOIN
INFORMATION_SCHEMA.TABLE_CONSTRAINTS FK
ON C.CONSTRAINT_NAME = FK.CONSTRAINT_NAME
INNER JOIN
INFORMATION_SCHEMA.TABLE_CONSTRAINTS PK
ON C.UNIQUE_CONSTRAINT_NAME = PK.CONSTRAINT_NAME
INNER JOIN
INFORMATION_SCHEMA.KEY_COLUMN_USAGE CU
ON C.CONSTRAINT_NAME = CU.CONSTRAINT_NAME
INNER JOIN
(
SELECT
i1.TABLE_NAME, i2.COLUMN_NAME
FROM
INFORMATION_SCHEMA.TABLE_CONSTRAINTS i1
INNER JOIN
INFORMATION_SCHEMA.KEY_COLUMN_USAGE i2
ON i1.CONSTRAINT_NAME = i2.CONSTRAINT_NAME
WHERE i1.CONSTRAINT_TYPE = 'PRIMARY KEY'
) PT
ON PT.TABLE_NAME = PK.TABLE_NAME
-- optional:
ORDER BY
1,2,3,4

محمد سلیم آبادی
چهارشنبه 26 اسفند 1388, 03:30 صبح
فارسی کردن فیلدها

برای این کار می توان از قسمت توضیحات که در زمان طراحی برای هر فیلد وجود دارد استفاده کرد . در این حالت نام فیلدها را به همراه فیلد توضیحات برای شما می اورد .


select a.value,b.name from sysproperties a full Join syscolumns b
on )a.smallid=b.colid) and ( a.id=b.id ) where
b.id in (Select id from sysobjects where name ='نام جدول'(




سلام،
البته این کوئری در 2000 فقط جواب میده. در 2005 بایستی به جای جدول/ویوی sysproperties از sys.extended_properties استفاده کنین

اینم لینکش:
http://www.devnewsgroups.net/group/microsoft.public.dotnet.framework.adonet/topic63153.aspx