मैंने अभी इसे SQL 2008 डेटाबेस पर करना समाप्त कर दिया है।
पहले मुझे डीबी को भरोसेमंद पर सेट करना था और सत्यापित करना था कि मालिक सही था।
use [myDB]
go
alter database [myDB] set trustworthy on
go
exec sp_changedbowner 'sa'
go
इसके बाद, मैंने एक .NET समाधान बनाया
Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.SqlTypes
Imports Microsoft.SqlServer.Server
Imports System.Collections.ObjectModel
Imports System.Runtime.InteropServices
Partial Public Class StoredProcedures
<Microsoft.SqlServer.Server.SqlProcedure()> _
Public Shared Sub sp_ConvertTime(ByVal UTCTime As DateTime, ByVal ZoneID As String, <Out()> ByRef Output As DateTime)
Dim sp As SqlPipe = SqlContext.Pipe
Dim ConvertedTime As DateTime
Dim tzUTC = TimeZoneInfo.FindSystemTimeZoneById("UTC")
Dim tzNew = TimeZoneInfo.FindSystemTimeZoneById(ZoneID)
ConvertedTime = TimeZoneInfo.ConvertTime(UTCTime, tzUTC, tzNew)
Output = ConvertedTime
sp.Send(ConvertedTime)
ConvertedTime = Nothing
tzUTC = Nothing
tzNew = Nothing
sp = Nothing
End Sub
End Class
परिनियोजन से पहले मैंने अनुमति स्तर को असुरक्षित . पर सेट किया था .
इसके बाद मैंने इसे परिनियोजित किया मैंने बिल्ड त्रुटियों के लिए आउटपुट विंडो की जाँच की और उन्हें ठीक किया।
ये रहा SQL टेस्ट
DECLARE @UTCTime datetime
DECLARE @ZoneID varchar(21)
DECLARE @NewTime datetime
SET @UTCTime = GETUTCDATE()
SET @ZoneID = 'Central Standard Time'
exec sp_ConvertTime @UTCTime, @ZoneID, @NewTime OUTPUT
select @NewTime AS NewTime