Array
(
)

Sessão

Sroque
   - 02 set 2005

Oi Pessoal,
Estou fazendo uma aplicação em VB e preciso de criar uma SP no SQL para me retornar o ID do usuário conectado e alguma identificação do terminal que ele está excecutando o aplicativo.
Vi que no Oracle tem o Userenv que tem como parâmetros sessionid e terminal.
E no SQL, é possível controlar a sessão também?
Se puderem me ajudar agradeço muito!
:wink:

Marcus.magalhaes
   - 03 set 2005

Bom dia Sandra, td bem?

para saber qual é a conexão que vc está utilizando, vc pode usar a variável global @@spid

[sql]Select @@spid[/sql] = irá retornar o ID da sua conexão.

para saber qual a máquina que está usando esta conexão vc tem 2 opções. Se tiver direito, faça um select na tabela sysprocesses

[sql]
Declare @var_hostname VarChar(100)
Select @hostname = hostname
From master..sysprocesses (NoLock)
Where spid = @@spid
[/sql]

Ou crie uma tabela temporária e armazene o retorno do sp_who @@spid e depois faça um select na tabela para pegar o hostname.

Espero ter ajudado.

Att,

Sroque
   - 05 set 2005

Boa noite Marcos,

Muito obrigada pela ajuda, é isso mesmo que eu queria! :lol:
Mas agora estou com outro problema, não consigo executar a SP, dá uma mensagem que não encontro a sp_grupo que criei. Não tenho experiência, com SP, fiz assim:
Tenho uma classe chamada ccjust rno VB para conectar e setar o rs que já testei e funciona.

Public Function conectar()
On Error GoTo erroConectar
conectar = False
Set cn = New adodb.Connection
With cn
.Provider = ´SQLOLEDB.1´
.ConnectionString = ´Network Library=DBMSSOCN; Initial Catalog=teste; Data Source=geral; User ID= sa; Password=sa´
.Open
End With

Public Function Setars(sqlstr As String) As Boolean
Set rs = New adodb.Recordset
With rs
.CursorLocation = adUseClient
.CursorType = adOpenStatic
.LockType = adLockReadOnly
.Open sqlstr, cn
End With
End Function

no form load:
Set strJust = New ccjust

A minha SP de teste é:
CREATE PROCEDURE [sp_grupo]
(@grcodigo_1 [char](6) output,
@grnome_2 [varchar](50))

AS Select [teste].[dbo].[Grupo]
( [grcodigo],
[grnome])
from [teste].[dbo].[Grupo]

where
grcodigo = ´ADM´
GO

No VB em um botão para testar:
Dim comando As New adodb.Command

Set comando.ActiveConnection = strJust.cn
comando.CommandType = adCmdStoredProc
comando.CommandText = ´sp_grupo´
comando.Execute

Marcus.magalhaes
   - 07 set 2005

Boa noite.

Vc está conectando no banco em q criou a SP?

Procure não utilizar SP_ como inicial dos nomes de suas procedures, pois sempre que o SQL Server encontra esta inicial, ele primeiro busca a procedure no db master e só depois no db q vc está conectada e isso causa perda de performance.

Dê uma verificada onde vc criou a SP e onde sua aplicação está chamando.

Espero ter ajudado,

Att,

Sroque
   - 08 set 2005


Citação:
Boa noite.

Vc está conectando no banco em q criou a SP?

Procure não utilizar SP_ como inicial dos nomes de suas procedures, pois sempre que o SQL Server encontra esta inicial, ele primeiro busca a procedure no db master e só depois no db q vc está conectada e isso causa perda de performance.

Dê uma verificada onde vc criou a SP e onde sua aplicação está chamando.

Espero ter ajudado,

Att,


Obrigada Marcus, consegui!