برنامه نویس

به وبلاگ خودتان خوش آمدید.

برنامه نویس

به وبلاگ خودتان خوش آمدید.

دستور Update با join در Sql Server

update item_master
set mf_item_number = (some value)
from 
   group_master as gm
   join Manufacturar_Master as mm ON ........
where
 .... (your conditions here)

-----------------------------------
UPDATE A SET foo = B.bar FROM TableA A JOIN TableB B ON A.col1 = B.colx WHERE ...

استفاده ازstored procedure با پارامتر خروجی در sql server

ALTER PROCEDURE testme @input  VARCHAR(10),
                       @output VARCHAR(20) output
AS
  BEGIN
      IF @input >= '1'
        BEGIN
            SET @output = 'i am back';

            RETURN;
        END
  END

DECLARE @get VARCHAR(20);

EXEC testme
  '1',
  @get output

SELECT @get 

جدا کردن بخشی از متن از اخرین "\" در sql server

DECLARE @FilePath VARCHAR(50)
DECLARE @FindChar VARCHAR(1)
set @FilePath= 'My\Super\Long\String\With\Long\Words'
set @FindChar= '\'
-- Shows text before last slash
SELECT LEFT(@FilePath, LEN(@FilePath) - CHARINDEX(@FindChar,REVERSE(@FilePath))) AS Before
-- Shows text after last slash
SELECT RIGHT(@FilePath, CHARINDEX(@FindChar,REVERSE(@FilePath))-1) AS After
-- Shows the position of the last slash
SELECT LEN(@FilePath) - CHARINDEX(@FindChar,REVERSE(@FilePath)) AS LastOccuredAt

تغییر نام دیتابیس در sql server 2000

EXEC sp_renamedb 'oldName', 'newName'
Go
ALTER DATABASE oldName MODIFY FILE (NAME=N'oldName_Data', NEWNAME=N'newName_Data')
GO
ALTER DATABASE oldName MODIFY FILE (NAME=N'oldName_Log', NEWNAME=N'newName_Log')
GO

تشخیص مسیر دیتابیس در sql server


DECLARE @DBAddress nvarchar(4000),@Address nvarchar(4000),
                @Index int
SELECT @DBAddress=[filename]
FROM master.dbo.sysdatabases where name = (select db_name())

SET @Index=CHARINDEX('\DB\',@DBAddress)
SET @Address=SUBSTRING(@DBAddress,1,@Index)

دستور CURSOR در Sql Server

DECLARE cursor1 CURSOR
    FOR select field1,field2,... from table1
OPEN cursor1
FETCH NEXT from cursor1 into  @field1,@field2,...
WHILE @@FETCH_STATUS = 0
BEGIN
دستورات مورد نظر
FETCH NEXT FROM cursor1 INTO  @field1,@field2,...
end
CLOSE cursor1
DEALLOCATE cursor1

تبدیل تاریخ به فرمت کاراکتر در sql server

دستور ان به صورت زیر نوشته میشود :

CONVERT(data_type(length),expression,style)

اسکریپت زیر حالت ها مختلف تبدیل تاریخ به رشته را نمایش میدهد

CONVERT(VARCHAR(19),GETDATE())
CONVERT(VARCHAR(10),GETDATE(),10)
CONVERT(VARCHAR(10),GETDATE(),110)
CONVERT(VARCHAR(11),GETDATE(),6)
CONVERT(VARCHAR(11),GETDATE(),106)
CONVERT(VARCHAR(24),GETDATE(),113)

CONVERT(VARCHAR(10),GETDATE(),11)

خروجی به صورت زیر نمایش داده میشود

Nov 04 2011 11:45 PM
11-04-11
11-04-2011
04 Nov 11
04 Nov 2011
04 Nov 2011 11:45:34:243 

14/12/06

این هم جدولی که نوع نمایش میتونید مشخص کنید


Value
(century yy)
Value
(century yyyy)
input/output
-0 or 100mon dd yyyy hh:miAM (or PM)
1101mm/dd/yy
2102yy.mm.dd
3103dd/mm/yy
4104dd.mm.yy
5105dd-mm-yy
6106dd mon yy
7107Mon dd, yy
8108hh:mm:ss
-9 or 109mon dd yyyy hh:mi:ss:mmmAM (or PM)
10110mm-dd-yy
11111yy/mm/dd
12112yymmdd
-13 or 113dd mon yyyy hh:mi:ss:mmm (24h)
14114hh:mi:ss:mmm (24h)
-20 or 120yyyy-mm-dd hh:mi:ss (24h)
-21 or 121yyyy-mm-dd hh:mi:ss.mmm (24h)
-126yyyy-mm-ddThh:mi:ss.mmm (no spaces)
-130dd mon yyyy hh:mi:ss:mmmAM
-131dd/mm/yy hh:mi:ss:mmmAM





پروسیژر ایجاد فایل پشتیبان و بازیابی اطلاعات بر روی دیتابیس جدید در sql


CREATE Procedure NewDoreh
@Path_DB    varchar(500)
As
Declare         @CountDattabase   int   
Declare     @Name_DB    nvarchar(50)
Declare     @Path_Data_File    nvarchar(500)
Declare     @Path_Log_File    nvarchar(500)
Declare     @SysName    varchar(10)
Declare     @DFName        varchar(14)
Declare     @LFName        varchar(14)

SET @SysName='databasename'
select @CountDattabase=count(name) from master.dbo.sysdatabases where name like '%databasename%'

SET @DFName=@SysName+'_Data'
SET @LFName=@SysName+'_Log'

SET @Name_DB=@SysName+ltrim(rtrim(Str(@CountDattabase+1)))
SET @Path_Data_File=rtrim(@Path_DB)+@Name_DB+'.mdf'
SET @Path_Log_File=rtrim(@Path_DB)+@Name_DB+'.ldf'

Declare @SQL_ Nvarchar(4000)

SET @SQL_= N'
Backup DataBase '+@SysName+ltrim(Str(@CountDattabase))+' To Disk='''+@Path_DB+'Bdatabasename.Bak'''
exec sp_executesql @SQL_

SET @SQL_= N'RESTORE DATABASE '+@Name_DB+' FROM  DISK ='''+ @Path_DB+'Bdatabasename.bak'' WITH  FILE = 1,  NOUNLOAD ,  STATS = 10,  RECOVERY ,  MOVE '''+@DFName +''' TO '''+@Path_Data_File+''',  MOVE '''+@LFName+''' TO '''+ @Path_Log_File+''''
exec sp_executesql @SQL_

select 1

GO