[SQL] 어떻게 SQL Server 2008을 자체에서 클라이언트 IP 주소를 얻으려면?
SQL어떻게 SQL Server 2008을 자체에서 클라이언트 IP 주소를 얻으려면?
나는 삽입 / 업데이트 트리거 / 삭제가 있습니다. 즉 벌금을 노력하고 있습니다. 또한, 나는 변경 한 위치에서 클라이언트의 IP 주소가 필요합니다. 나는 T-SQL에서 필요로하는, 수단, 모든 웹 형태로하지만, SQL / T-SQL 내 트리거는 트리거됩니다 않으면 서있다.
또한 나는 갈-추파 및 ipconfig를 함께 실행될 때 우리는 IP 주소를 얻을 수 있습니다 마스터라는 이름의 데이터베이스 xp_cmdshell을 절차가 저장되어 있음을 얻었다. 난 당신이 데이터베이스에 대한 관리 액세스 권한이있는 경우에만 동작합니다 생각합니다. 나는 그런 특권을하지 않아도 내 호스팅은 호스팅 공유됩니다. 다른 방법 밖으로 있는가?
도와주세요
미리 감사드립니다
참고하십시오 : 내 SQL 서버 2008 데이터베이스에 대한 관리 권한이 없습니다. 나는 인증 된 사용자로 솔루션이 필요합니다.
또 다른 업데이트 :
나는 나의 시나리오가 작동 할 쿼리를 솔루션을 가지고있다
SELECT hostname, net_library, net_address
FROM sys.sysprocesses
WHERE spid = @@SPID
필요하지만, 단 하나의 문제는 NET_ADDRESS가 IP 형식이 아닌 것을,이 같이 실행합니다. 아래 나의 결과는 다음과 같습니다
hostname net_library net_address
IPC03 TCP/IP AE8F925461DE
내가 알고 열망 :
겸손한 부탁:
/ 응답 주석 / downvoting하기 전에, 당신이 철저하게, 첫째, 질문을 통해 이동을 요청할 것입니다. 나는 / 어떤 사람이 댓글을 달았 발견 제대로 질문을 거치지 않고을 downvoted. 어떤 문제가, 모두가 실수를하지 않습니다. 하지만 때마다 메이크업 실수. :)
해결법
-
==============================
1.나는 당신을 위해 일 수있는 무언가를 발견
나는 당신을 위해 일 수있는 무언가를 발견
CREATE FUNCTION [dbo].[GetCurrentIP] () RETURNS varchar(255) AS BEGIN DECLARE @IP_Address varchar(255); SELECT @IP_Address = client_net_address FROM sys.dm_exec_connections WHERE Session_id = @@SPID; Return @IP_Address; END
SQL 서버에서 클라이언트 IP 주소의 취득 방법
또한 가져 오기 클라이언트 IP 주소에 대한이 문서를 보라
-
==============================
2.이 솔루션을 시도 할 수 있습니다. 심지어 공유 호스팅에서 작동합니다 :
이 솔루션을 시도 할 수 있습니다. 심지어 공유 호스팅에서 작동합니다 :
select CONNECTIONPROPERTY('client_net_address') AS client_net_address
-
==============================
3.그것은 코드의 단지 한 줄 필요
그것은 코드의 단지 한 줄 필요
SELECT CONVERT(char(15), CONNECTIONPROPERTY('client_net_address'))
-
==============================
4.궁극적으로이 개 시스템 테이블을 조인 :
궁극적으로이 개 시스템 테이블을 조인 :
SELECT hostname, net_library, net_address, client_net_address FROM sys.sysprocesses AS S INNER JOIN sys.dm_exec_connections AS decc ON S.spid = decc.session_id WHERE spid = @@SPID
산출:
hostname | net_library | net_address | client_net_address PIERRE | TCP/IP | 0090F5E5DEFF| 10.38.168.5
-
==============================
5.제가 정확한 숫자 IP 주소를 가져올 수 없습니다, 대신 나는 때문에 위의 문장의 제한 NULL 값을 얻었다. 한계는 TCP / IP를 통해 연결되어있는 경우에만 IP 주소를 얻을 수 있다는 것입니다. 로컬이고 공유 메모리를 사용하는 경우, 그 속성은 존재하지 않습니다. 당신은 서버 구성 관리자를 통해 공유 메모리 (또는 TCP / IP를 제외한 모든 프로토콜)를 해제하면 당신은 항상 연결을위한 IP 주소를 얻을 것이다.
제가 정확한 숫자 IP 주소를 가져올 수 없습니다, 대신 나는 때문에 위의 문장의 제한 NULL 값을 얻었다. 한계는 TCP / IP를 통해 연결되어있는 경우에만 IP 주소를 얻을 수 있다는 것입니다. 로컬이고 공유 메모리를 사용하는 경우, 그 속성은 존재하지 않습니다. 당신은 서버 구성 관리자를 통해 공유 메모리 (또는 TCP / IP를 제외한 모든 프로토콜)를 해제하면 당신은 항상 연결을위한 IP 주소를 얻을 것이다.
당신은 최고의 붙어 있습니다
SELECT SERVERPROPERTY(N'MachineName');
... 숫자로 된 IP 주소 대신 역할을 할 수있다.
-
==============================
6.이 시도
이 시도
DECLARE @IP_Address varchar(255); SELECT @IP_Address = client_net_address FROM sys.dm_exec_connections WHERE Session_id = @@SPID; select @IP_Address;
from https://stackoverflow.com/questions/9941074/how-to-get-the-client-ip-address-from-sql-server-2008-itself by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] PostgreSQL을 다른 테이블의 컬럼이있는 테이블의 열을 업데이트 (0) | 2020.06.26 |
---|---|
[SQL] 에서 테이블을 선택 *에 SQLite는 삽입 (0) | 2020.06.26 |
[SQL] 최적의 SQL 방법은 무엇입니까 : SELECT 문 다음 행의 수를 필요하십니까? (0) | 2020.06.26 |
[SQL] 동적 SQL은 무엇인가? (0) | 2020.06.26 |
[SQL] SQL-서버 성능 : 뭐, 빠른 저장 프로 시저 또는 뷰? (0) | 2020.06.26 |