是否有可能,如果是这样,如何获得用户的远程IP地址执行查询,类似于我们可以获得用户的名字:SUSER_SNAME()?
在赏金之前更新
我正在寻找一种解决方案,它允许获取普通凡人用户的IP地址,而不是数据库所有者.TheGameiswar或njc提出的想法不允许捕获仅被授予execute权限的用户的IP地址.但是,它们是解决问题的绝佳方法.在这里,我列出了这些想法的精髓:
请看我遵循的顺序:
create procedure MyStoredProcedure as
select client_net_address
from sys.dm_exec_connections
where session_id = @@SPID
Run Code Online (Sandbox Code Playgroud)
现在添加用户并授予权限:
CREATE LOGIN [user_mortal_jack] WITH PASSWORD=N'LongYouLive!!!';
GRANT EXECUTE ON MyStoredProcedure TO [user_mortal_jack];
Run Code Online (Sandbox Code Playgroud)
当我使用查询运行该过程时:
EXECUTE AS USER = 'user_mortal_jack'
exec MyStoredProcedure
REVERT
Run Code Online (Sandbox Code Playgroud)
我收到错误消息:
正在执行的模块不受信任.需要为模块的数据库所有者授予身份验证权限,或者需要对模块进行数字签名.
即使我授予了额外的许可,我也会收到此消息:
grant VIEW SERVER STATE to [user_mortal_jack];
Run Code Online (Sandbox Code Playgroud)
如果我将存储过程的开头更改为:
create procedure MyStoredProcedure
with execute as OWNER as
Run Code Online (Sandbox Code Playgroud)
我最终得到了不同类型的错误:
无法获取有关Windows NT组/用户'blahblah\admin_user'的信息,错误代码为0x534.
赏金后更新
赏金被授予Hadi,因为他们的答案中隐藏着这一行代码:
CONNECTIONPROPERTY('client_net_address')
Run Code Online (Sandbox Code Playgroud)
让我们捕获任何凡人用户的IP地址,既不给予用户任何额外的权利,也不设置数据库TRUSTWORTHY ON选项,甚至不创建过程WITH EXECUTE AS OWNER子句.
CALCULATE如果我们在有和没有FILTER功能的情况下使用它,那么函数结果有什么不同.假设我们有这两个措施:
Measure1 = CALCULATE([X], 'FactTable'[Color]="Red")
Measure2 = CALCULATE([X], FILTER('FactTable', 'FactTable'[Color]="Red")
Run Code Online (Sandbox Code Playgroud)
更新.额外的赏金问题:
有没有办法通过使用其他函数来修改Measure2,例如ALL,或者ALLSELECTED,它会返回与Measure1完全相同的结果?
赏金后更新
我决定给予赏金以获得与我接受的答案不同的答案.
如何Auto-hide Ribbon在Excel 2013中的VBA?我想通过点击下面图片中标有蓝色的Excel菜单右上角的上箭头图标,然后点击标有橙色的第一个选项,来获得我所得到的结果:
我也有兴趣将VBA切换回第三种选择Show Tabs and Commands.对我来说重要的是在Excel菜单中保留上箭头图标(标有蓝色).
我尝试过这个帖子中显示的提示:VBA最小化Excel中的功能区 但我对结果不满意.
尝试1
Application.ExecuteExcel4Macro "Show.ToolBar(""Ribbon"",False)
Run Code Online (Sandbox Code Playgroud)
这很好,但隐藏了蓝色图标.
尝试2
CommandBars.ExecuteMso "MinimizeRibbon"
Run Code Online (Sandbox Code Playgroud)
这接近我想要的.这会保留蓝色图标,但不会隐藏整个菜单.它切换到图片中显示的第二个选项Show Tabs.
尝试3
SendKeys "^{F1}"
Run Code Online (Sandbox Code Playgroud)
豁免根本不起作用.此外,它应该模仿尝试2.所以即便这样也不会让我满意.
如何在SQL Server中将包含矩阵的字符串拆分为表?String具有列和行分隔符.
假设我有一个字符串:
declare @str varchar(max)='A,B,C;D,E,F;X,Y,Z';
Run Code Online (Sandbox Code Playgroud)
预期结果(分三列):
+---+---+---+
| A | B | C |
+---+---+---+
| D | E | F |
+---+---+---+
| X | Y | Z |
+---+---+---+
Run Code Online (Sandbox Code Playgroud)
我正在寻找没有定义列数和行数的通用解决方案.所以字符串:
declare @str varchar(max)='A,B;D,E';
Run Code Online (Sandbox Code Playgroud)
将分为两列的表格:
+---+---+
| A | B |
+---+---+
| D | E |
+---+---+
Run Code Online (Sandbox Code Playgroud)
我的努力.我的第一个想法是使用动态SQL将字符串转换为:
insert into dbo.temp values (...)这种方法虽然非常快,但有一个小缺点,因为它需要先创建一个具有正确列数的表.我在下面回答我自己的问题时提出了这个方法,只是为了让问题简短.
另一个想法是将字符串写入服务器上的CSV文件,然后bulk insert从中写入.虽然我不知道该怎么做以及第一和第二个想法会有什么表现.
我问这个问题的原因是因为我想将数据从Excel导入到SQL Server.由于我已经尝试了不同的ADO方法,这种发送矩阵串的方法是一种压倒性的胜利,特别是当字符串的长度增加时.我问这个问题的小弟弟:将Excel范围转换为VBA字符串 ,在那里你可以找到如何从Excel范围准备这样一个字符串的建议.
赏金我决定奖励马特.我高度评价肖恩兰格的 答案.谢谢肖恩.我喜欢Matt的简单和简洁的答案.除了Matt和Sean之外的其他方法可以并行使用,所以暂时我不接受任何答案(更新:最后,几个月之后,我接受了Matt的回答).我要感谢Ahmed Saeed对VALUES的看法,因为这是我开始的答案的一个很好的演变.当然,这与马特或肖恩不匹配.我赞成了每一个答案.我将非常感谢您对使用这些方法的任何反馈.谢谢你的追求.
如何以任何编程方式将数据从已发布的特定 Power BI 视觉对象导入另一个 PBI 报告或 SQL Server 表,或者只是将其废弃到本地驱动器?我想达到与单击> >...中的三个点到本地驱动器相同的效果。
right upper corner of published PBI visualexport dataSave as
这为我提供了我需要的整个数据表,而无需查看其他人如何生成视觉的复杂性(即在未知键上连接许多表)。无论利弊如何,我都想从 PBI visual 的外部报告中获取数据,而Power BI datasets不是从任何其他初级的外部报告来源中获取数据。
理想情况下,我想插入外部报告的视觉效果作为 Power BI 报告的来源。如果这是不可能的,有没有办法使用 R 打开 PBI 外部报告,并将数据从特定视觉导出到 R data.frame?如果没有,也许可以用 Python 或任何其他专为数据抓取设计的程序来完成?
我有我的很多板材下拉列表中,我已经通过菜单设置Data> Data Validation> list.VBA中有一种批量方式可以将它们全部设置为默认值吗?默认值我指的是列表中声明的第一个值.
BTW.我按照公式为A1中的下拉列表设置了一个来源:
__PRE__
是否有办法将此公式放入B1并在下拉列表源中将其称为Choose item from the list仅指向一个单元格?(这不起作用).
我希望能够轻松地仅使用鼠标更改单元格值(常量,而不是公式),而无需使用键盘键入新值.
令人遗憾的是,到目前为止还没有发明它,因为这样的滚动条允许动态观察其他公式和图表会发生什么.
单击包含值的单元格后,某些滚动条(或其他魔鬼的设备)会显示在单元格下方(或单元格的右侧).只使用此设备可以用鼠标更改单元格的值.应该可以定义滚动条的最小值和最大值.如果未定义,则应将最小值和最大值假定为当前值的30%(最小值)和170%(最大值).单击另一个单元格时,"旧"滚动条将消失,并且新单击滚动条将显示在单击的单元格下方.应该有可能定义滚动条显示的单元格(对于其他单元格,它不会).
我需要的东西不是普通的Excel滚动条,它只会改变一个单元格的值,而且我不希望在我的工作表上分散有数百个滚动条.
根据我的研究,我发现:
我可以在工作表或工作簿中设置将响应所选单元格的事件.我可以检查该单元格是否允许显示滚动条.如果是这样,我可以让我的代码创建一个新的滚动条,或使现有的滚动条可见,并找到活动单元格下方的滚动条.更改滚动条可能会影响单元格的值.需要控制值如何更改,以避免使用15位十进制数字的值.取消选择单元格后,可以销毁或隐藏滚动条,直到下次使用.
由于我是VBA的中间用户,有人可以指导我吗?也许之前有人建造过类似的设备?
更新,2015年2月13日
我已提交了我的问题的答案.现在我期待着提高工具的速度.
更新,2015年3月23日
以下是一些提高工具性能的后续建议
如何构建DAX度量来计算特定月份的YTD值之和?
在这里,我们将FactTable按月分组.FactTable充满了实际数据和预测数据.知道何时实际结束的唯一方法是[年末截止日期]列[年末截止日期]中的信息.在[年终截止日期]列[年末截止日期]中 - 它是一个单值表 - 我们有一个有趣的选择月份,我们希望看到YTD的计算.在我们的例子中,它是三月.FactTable每月不定期更新,通常延迟一个月.由于不规则的更新,无法将其链接到像TODAY这样的时间函数.
我们希望在黄色Card Visual中显示正确的YTD值[月末] [YTD].当我们点击"2018-03"上的切片机时,我们几乎得到了我们想要的东西 - 在黄卡中正确值为66.但是这种解决方案不是自动的.我想在[年末]月份变化时自动查看正确的值,在我们的情况下是4月或5月.我不希望用户完成它.
我的绝望努力可以从文件:DAX YTD.pbix下载
我以各种方式追赶鹿:
我很感激你的帮助.
在赏金之前更新. 走向更高的水平.我已经向FactTable引入了一个Category列.请按category.pbix下载DAX YTD.所以过滤现在变得更加复杂.我想为苹果类别提供正确的YTD数据.
nude SUM和sum wrap in有CALCULATE什么区别?
Measure1 = SUM( tab[col1]) )
Measure2 = CALCULATE ( SUM( tab[col1]) ) )
Run Code Online (Sandbox Code Playgroud)
更新。
我得到了其他SO问题的答案,该问题使用包装的计算。问题的作者对此做了解释,但我仍然不明白。这是作者建议的措施:
Expected Result =
SUMX (
VALUES ( Unique_Manager[Manager] ),
VAR SumBrand = CALCULATE ( SUM ( Budget_Brand[BudgetBrand] ) )
VAR SumProduct = CALCULATE ( SUM ( Budget_Product[BudgetProduct] ) )
RETURN
IF ( ISBLANK ( SumProduct ), SumBrand, SumProduct )
)
Run Code Online (Sandbox Code Playgroud)
并说明:
(...)请注意,我将总和打包在CALCULATE中。这样做是为了执行从SUMX内部的行上下文(特定的Manager)到将该Manager用作BudgetBrand和BudgetProduct上的筛选器上下文的上下文转换。将这些和存储为变量会使IF行更易读,并且仅要求SumProduct一次计算而不是两次。
我知道什么是过滤器上下文。但是我不明白什么是上下文转换。还有其他过渡吗?
如何左连接两个表,仅从第二个表中选择第一行?

我的问题是跟进: SQL Server:如何加入第一行 我使用了该线程中建议的查询。
CREATE TABLE table1(
id INT NOT NULL
);
INSERT INTO table1(id) VALUES (1);
INSERT INTO table1(id) VALUES (2);
INSERT INTO table1(id) VALUES (3);
GO
CREATE TABLE table2(
id INT NOT NULL
, category VARCHAR(1)
);
INSERT INTO table2(id,category) VALUES (1,'A');
INSERT INTO table2(id,category) VALUES (1,'B');
INSERT INTO table2(id,category) VALUES (1,'C');
INSERT INTO table2(id,category) VALUES (3,'X');
INSERT INTO table2(id,category) VALUES (3,'Y');
GO
------------------
SELECT
table1.*
,FirstMatch.category
FROM table1
CROSS APPLY (
SELECT TOP 1
table2.id
,table2.category …Run Code Online (Sandbox Code Playgroud)