小编Prz*_*min的帖子

在调用存储过程时获取用户的IP地址(SQL)

是否有可能,如果是这样,如何获得用户的远程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子句.

sql t-sql sql-server ip stored-procedures

17
推荐指数
1
解决办法
3407
查看次数

DAX使用和不使用FILTER计算功能

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完全相同的结果?

赏金后更新
我决定给予赏金以获得与我接受的答案不同的答案.

dax powerbi

12
推荐指数
2
解决办法
9569
查看次数

VBA自动隐藏功能在Excel 2013中

如何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.所以即便这样也不会让我满意.

excel vba excel-vba

10
推荐指数
3
解决办法
3万
查看次数

在SQL Server中给定行分隔符和列分隔符的情况下将字符串拆分为表

如何在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的看法,因为这是我开始的答案的一个很好的演变.当然,这与马特或肖恩不匹配.我赞成了每一个答案.我将非常感谢您对使用这些方法的任何反馈.谢谢你的追求.

sql sql-server string split

10
推荐指数
2
解决办法
2389
查看次数

从已发布的 Power BI 视觉对象中抓取数据

如何以任何编程方式将数据从已发布的特定 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 或任何其他专为数据抓取设计的程序来完成?

python r beautifulsoup web-scraping powerbi

8
推荐指数
1
解决办法
4004
查看次数

在"数据验证"下拉列表中设置默认值

我有我的很多板材下拉列表中,我已经通过菜单设置Data> Data Validation> list.VBA中有一种批量方式可以将它们全部设置为默认值吗?默认值我指的是列表中声明的第一个值.

BTW.我按照公式为A1中的下拉列表设置了一个来源:

__PRE__

是否有办法将此公式放入B1并在下拉列表源中将其称为Choose item from the list仅指向一个单元格?(这不起作用).

excel vba excel-vba drop-down-menu

7
推荐指数
1
解决办法
5万
查看次数

如何仅使用鼠标更改Excel单元格的值?

我希望能够轻松地仅使用鼠标更改单元格值(常量,而不是公式),而无需使用键盘键入新值.

令人遗憾的是,到目前为止还没有发明它,因为这样的滚动条允许动态观察其他公式和图表会发生什么.

单击包含值的单元格后,某些滚动条(或其他魔鬼的设备)会显示在单元格下方(或单元格的右侧).只使用此设备可以用鼠标更改单元格的值.应该可以定义滚动条的最小值和最大值.如果未定义,则应将最小值和最大值假定为当前值的30%(最小值)和170%(最大值).单击另一个单元格时,"旧"滚动条将消失,并且新单击滚动条将显示在单击的单元格下方.应该有可能定义滚动条显示的单元格(对于其他单元格,它不会).

我需要的东西不是普通的Excel滚动条,它只会改变一个单元格的值,而且我不希望在我的工作表上分散有数百个滚动条.

根据我的研究,我发现:
我可以在工作表或工作簿中设置将响应所选单元格的事件.我可以检查该单元格是否允许显示滚动条.如果是这样,我可以让我的代码创建一个新的滚动条,或使现有的滚动条可见,并找到活动单元格下方的滚动条.更改滚动条可能会影响单元格的值.需要控制值如何更改,以避免使用15位十进制数字的值.取消选择单元格后,可以销毁或隐藏滚动条,直到下次使用.

由于我是VBA的中间用户,有人可以指导我吗?也许之前有人建造过类似的设备?

更新,2015年2月13日
我已提交了我的问题的答案.现在我期待着提高工具的速度.

更新,2015年3月23日
以下是一些提高工具性能的后续建议

mouse excel vba excel-vba

6
推荐指数
2
解决办法
3640
查看次数

在DAX中测量以仅为Power BI计算所选月份的YTD

如何构建DAX度量来计算特定月份的YTD值之和?

在这里,我们将FactTable按月分组.FactTable充满了实际数据和预测数据.知道何时实际结束的唯一方法是[年末截止日期]列[年末截止日期]中的信息.在[年终截止日期]列[年末截止日期]中 - 它是一个单值表 - 我们有一个有趣的选择月份,我们希望看到YTD的计算.在我们的例子中,它是三月.FactTable每月不定期更新,通常延迟一个月.由于不规则的更新,无法将其链接到像TODAY这样的时间函数.

在此输入图像描述 在此输入图像描述 我们希望在黄色Card Visual中显示正确的YTD值[月末] [YTD].当我们点击"2018-03"上的切片机时,我们几乎得到了我们想要的东西 - 在黄卡中正确值为66.但是这种解决方案不是自动的.我想在[年末]月份变化时自动查看正确的值,在我们的情况下是4月或5月.我不希望用户完成它.

我的绝望努力可以从文件:DAX YTD.pbix下载

我以各种方式追赶鹿:

  1. 通过在DAX测量中使用FILTER功能.但似乎FILTER功能是苛刻的.它首先应用于事实表,仅选择一个月,然后错误地计算YTD值.因此,如果有任何强制计算和过滤顺序的选项,那么就会有希望.
  2. 我尝试使用SWITCH函数显示特定月份的正确结果,0或其他月份显示null.虽然我在这方面取得了成功,但我无法利用它.在过滤方面,我和以前一样无望.顺便说一句,如果SWITCH在表格末尾产生总数,我就能做到,但事实并非如此.出奇.
  3. 我希望RELATED函数能够在[Cut off date]表中显示正确的结果.到目前为止,我还没有走出迷雾.

我很感激你的帮助.

在赏金之前更新. 走向更高的水平.我已经向FactTable引入了一个Category列.请按category.pbix下载DAX YTD.所以过滤现在变得更加复杂.我想为苹果类别提供正确的YTD数据.

measure dax powerbi

6
推荐指数
1
解决办法
1万
查看次数

DAX裸加和与CALCULATE中包装的总和之间的差异

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一次计算而不是两次。

我知道什么是过滤器上下文。但是我不明白什么是上下文转换。还有其他过渡吗?

dax powerbi

6
推荐指数
1
解决办法
171
查看次数

如何将连接保留到 SQL Server 中的第一行

如何左连接两个表,仅从第二个表中选择第一行? 第一场比赛

我的问题是跟进: 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)

sql sql-server left-join

5
推荐指数
1
解决办法
896
查看次数