我有一个插入/更新/删除的触发器.这很有效.此外,我还需要进行更改的客户端的IP地址.我需要在T-SQL中,这意味着,不是在任何web表单中,而是在SQL/T-SQL中,而我的触发器将被触发.

我还进行了观察,发现主数据库中有一个名为xp_cmdshell的存储过程,当用ipconfig执行时,我们可以得到IP地址.我认为只有当你有数据库的管理权限时,这才有效.我的主机是共享主机,所以我没有这样的特权.还有别的出路吗?

Please note:我对我的SQL Server 2008数据库没有管理权限.作为经过身份验证的用户,我需要一个解决方案.

Another update:

我已经得到了解决方案,适用于我的场景的查询是

SELECT hostname, net_library, net_address
FROM sys.sysprocesses 
WHERE spid = @@SPID

它会根据需要执行,但只有一个问题,即net_地址不是IP格式.以下是我的结果:

hostname    net_library     net_address
IPC03       TCP/IP          AE8F925461DE  

我很想知道:

  1. 这里的网络地址是什么?是MAC地址还是IP地址等?

  2. 有没有办法将NET_ADDRESS转换为IP?

推荐答案

我找到了对你有用的东西

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

How to get Client IP Address in SQL Server

也请看这篇关于Get client IP address岁左右的文章

Asp.net相关问答推荐

在控制器中通过依赖项注入使用ASP.NET变量值时,不会持久化

单个方法(即扩展方法)之间的调用不明确

当前http上下文的http动词

如何使用 executeReader() 方法仅检索一个单元格的值

威胁已经被清除了

用户NT AUTHORITY\NETWORK SERVICE登录失败

正在检索组件的 COM 类工厂......错误:80070005 访问被拒绝. (来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED))

Webapi、Webhost和Owin的关系

N' 在 SQL 脚本中代表什么? (插入脚本中字符之前使用的那个)

配置转换和TransformXml 任务失败错误消息

如何在 ASP.NET 中仅在调试模式下执行代码

LINQ to Entities 无法识别 MVC 4 中的System.String ToString()方法

如何获取正在访问 ASP.NET 应用程序的当前用户?

在 Android/Java 和 C# 中计算 SHA256 哈希

ASP .NET Button 事件处理程序不会在第一次单击时触发,而是在 PostBack 后的第二次单击时触发

如何获取当前登录用户的角色列表

使用 ASP.NET 进行重定向后获取

如何从 ASP.NET Identity 获取用户列表?

强制 IIS Express 进入classic 管道模式

DataTable 不包含 AsEnumerable 的定义