要開始我會告訴你這一點。下一個問題對我來說很棘手,但是......這個存儲過程用在兩個不同的數據庫中。兩者都具有相同的數據,我們稱它們爲更舊和更新。代碼或存儲過程有問題
在較舊的存儲過程工作正常,我什至得到了回報。但在新一代並不一樣。
ALTER PROCEDURE dbo.actual_user
@user char(15)
AS
SELECT
US.Usercode, US.UsercodeSQL, US.LastName, US.Name, US.Nivel,
CONVERT(int, US.Timestamp) TS,
S.DateChanged, S.TolPSW, S.LoginsTotals, S.LoginsUsed,
S.InitialDate, S.EndDate
FROM
System_Users US
INNER JOIN
Session_Users S ON US.UssercodeSQL = S.UssercodeSQL
WHERE
US.UsercodeSQL = user_id(@usuario)
AND S.UsercodeSQL = user_id(@usuario)
當我運行一個像這樣的EXEC(通過這種方式在兩個數據庫作品):
exec actual_user 'telc\u124453'
我得到這樣的輸出:
Usercode UsercodeSQL LastName Name Nivel TS DateChanged TolPSW LoginsTotals LoginsUsed InitialDate EndDate
----------------------------- ----------- ------------------------------ ------------------------------ ------ ----------- ----------------------- --------------- ------------- ------------ ----------------------- -----------------------
FESPE 15 Brond Manny NULL 16838419 2007-04-16 16:57:00 30 10 0 NULL NULL
但我的代碼m使用不適用於較新的數據庫。就是這樣。
這是我的新代碼。它適用於較舊的數據庫,但較新的數據庫不適用。可能SqlServer的版本不工作原因user_id來自存儲過程,我不知道。
Public Function UsuarioActual(ByVal datoUsuario As String) As DSUsuario.UsuarioActualRow
Dim ds As New DSUsuario
Dim dt As New DataTable
Dim sqlConn As SqlConnection = New SqlConnection()
Dim sqlAdp As SqlDataAdapter
Try
sqlConn = MyBase.GetConnection
Dim command As New SqlCommand("Usuario_Actual", sqlConn)
command.CommandType = CommandType.StoredProcedure
command.Parameters.AddWithValue("@usuario", datoUsuario)
sqlAdp = New SqlDataAdapter(command)
sqlAdp.Fill(dt)
Catch ex As Exception
proc = "UsuarioActual"
ERROR
epn = New FactEspExceptions(ex, TipoExcepcion.ErrorBD, proc, Nothing, ex.Message)
epn = New FactEspExceptions(ex, TipoExcepcion.ErrorBD, proc)
epn.AuditarError()
Throw epn
Finally
sqlConn.Close()
sqlConn = Nothing
End Try
If ds.UsuarioActual.Rows.Count > 0 Then
Return ds.UsuarioActual.Rows(0)
Else
Return Nothing
End If
End Function`
編輯1: 當代碼運行,上了年紀的DB它的工作原理。但是,當它在較新的數據庫上運行時,它不會。我不知道它是關於權限,execSP還是缺失的東西。所以在我看來,我可以說問題出在SP上。
編輯2: 從代碼運行我得不到輸出。 這是從兩個DB上的EXEC運行的錯誤。
過程 'actual_user' 不具有任何參數和參數被供給
編輯3:代碼更新。
你能更準確地說'不行'嗎? – peterG
@peterG對不起,正在努力。更新。謝謝! –
不要執行''EXEC actual_user'「+ usuTelecom +」'「'。這允許SQL注入。使用'SqlParameter'。另外,爲什麼'CHAR(15)'而不是'VARCHAR(15)'?此外,即使編輯,你仍然不說_what_不起作用。有錯誤嗎?如果是這樣,請發佈完整的錯誤消息。你只是沒有結果?如果是這樣,請檢查兩個數據庫的默認排序規則,因爲這可能會改變字符串比較的工作方式。否則,請在該問題中添加更多詳細信息。 –