Sessão

02/09/2005

0

:cry: 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:


Sroque

Sroque

Responder

Posts

03/09/2005

Marcus.magalhaes

Bom dia Sandra, td bem?

para saber qual é a conexão que vc está utilizando, vc pode usar a variável global [b:5c7603a663]@@spid[/b:5c7603a663]

[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 [b:5c7603a663]sp_who @@spid[/b:5c7603a663] e depois faça um select na tabela para pegar o hostname.

Espero ter ajudado.

Att,


Responder

05/09/2005

Sroque

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


Responder

07/09/2005

Marcus.magalhaes

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,


Responder

08/09/2005

Sroque

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!


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar