小编Reg*_*ser的帖子

您在生产企业环境中见过的最恶劣的代码是什么?

您在公司的生产环境中见过的最邪恶或最危险的代码片段是什么?我从来没有遇到过我认为故意恶意和邪恶的生产代码,所以我很好奇看到其他人发现了什么.

我见过的最危险的代码是存储过程,两个链接服务器远离我们的核心生产数据库服务器.存储过程接受任何NVARCHAR(8000)参数,并通过双跳sp_executeSQL命令在目标生产服务器上执行该参数.也就是说,sp_executeSQL命令执行另一个sp_executeSQL命令以跳转两个链接的服务器.哦,链接的服务器帐户在目标生产服务器上具有sysadmin权限.

anti-patterns

76
推荐指数
22
解决办法
5万
查看次数

通过SSIS获取SFTP或FTPS文件的最佳方法

这个问题最初询问哪种是在SSIS中通过SFTP或FTPS上传文件的最佳方法.现在只列出每种解决方案的优缺点.我个人现在使用CozyRoc的SFTP库,但我已经在某个方面使用了以下每个解决方案.

SSIS组件库

方法:从CozyRoc,Codeplex,BizCrypto,PragmaticWorks或每个开发和生产服务器上的某些其他供应商安装SSIS组件库,并使用SFTP任务上载文件.

优点:易于使用.它看起来,闻起来和感觉就像一个正常的SSIS任务.SSIS还将密码识别为敏感信息,并允许您保护敏感信息的所有常规选项,而不是仅以非安全方式将其存储为明文.适用于其他SSIS任务,例如ForEach Loop Containers.上传和下载失败时出错.当您不知道要下载的远程FTP站点上的文件名称或者在运行时之前您不知道要上载的文件的名称时,可以正常工作.

缺点:除了Codeplex解决方案之外,这需要花费在生产环境中许可.需要在每台开发和生产计算机上安装库.如果是Codeplex解决方案,那么您使用的是任何特定供应商都不支持的软件.这也使您依赖供应商在每个版本之间更新其库.例如,在2008 RTM之前,我在2008年的CTP版本上开发了一个新服务器,而CozyRoc 2005库与它不兼容.最终他们发布了2008兼容版本,但我不得不暂时使用命令行解决方案来解决这个问题.

命令行SFTP程序

方法:安装一个免费的命令行SFTP应用程序,如Putty和WinSCP,并通过运行批处理文件或操作系统进程任务来执行它.这里列出通过WinSCP执行此操作的说明.

优点:免费,免费,免费.如果您使用Putty,您可以确定它是安全的,因为许多GUI FTP客户端似乎使用Putty.您肯定知道您使用的是SSH2而不是SSH.

缺点:我尝试过的两个命令行实用程序(Putty和Cygwin)需要将SFTP密码存储在非安全位置.我没有找到一种在上传文件时捕获失败或错误的好方法.这个过程看起来并不像SSIS.大多数代码都封装在文本文件中而不是SSIS本身.如果您不知道要上载或下载的文件的确切名称,则很难使用.

一个3RD PARTY C#或VB.NET LIBRARY

方法:安装SFTP或FTPS库并使用引用库的脚本任务来上载文件.(我从未尝试过这个,所以我会猜测它的优点和缺点)

优点:可能很容易捕获错误.应该可以很好地处理变量,因此即使您不知道要上传或下载的文件的确切名称,它也可能很容易使用.

缺点:这是一个结合.NET库的脚本任务.如果您正在使用SSIS,那么您可能更熟悉SSIS任务,然后是.NET代码.脚本任务也很难排除故障,因为它们没有与常规.NET项目相同的调试工具和功能.创建对第三方代码的依赖关系,这些代码可能在不同版本的SQL Server之间不起作用.公平地说,它可能更有可能在不同版本的SQL Server之间工作,而不是第三方SSIS任务库.另一个巨大的骗局 - 我还没有找到一个免费的C#或VB.NET库.所以如果有人知道,那么请告诉我!

service integration sftp ssis ftps

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

SSIS中的Hyperion Essbase连接

如何让SSIS连接到Oracle Hyperion Essbase多维数据集以将其用作数据源?谷歌搜索返回以下内容:

  1. 有一个类似的问题被问到一个特定的版本没有真正的答案,除了"第三方工具可以做到".

  2. 一个微软SSIS连接器维基表明您可以通过做这个星分析.

  3. 从SQL Server 2005 SP2开始,Reporting Services(SSRS)具有数据源连接.此产品功能似乎没有转换为SSIS的任何对象.一位博主建议,在Hyperion开始支持连接到SQL Server 2005 SSAS多维数据集之前,这可能是在Oracle收购Hyperion之前作为交换条件安排完成的.

  4. 根据@billinkc,他使用直接.NET连接到它.一点点挖掘返回了Hyperion Application Builder .NET(HAB.NET).起初,这似乎是一个很有前景的解决方案,但事实证明该产品已经停止使用11.1.3版本.@billinkc现在也提供了一个代码示例,所以我将测试它,看看它是否有效.

除了许可成本过高的Star Analytics服务器产品(对我而言),还有其他解决方案吗?

.net oracle ssis hyperion essbase

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

加入价值范围的最优绩效

我有一个非常大的表,包含IP地址的整数表示,第二个表包含IP地址的整数表示的起始和结束范围.第二个表用于按照几个stackoverflow文章返回国家/地区.虽然这会返回所需的结果,但性能相当差.加入一个范围是否有更高性能的替代方案?下面是一组示例代码,显示了当前连接的工作方式:

CREATE TABLE #BaseTable
    ( SomeIntegerValue INT PRIMARY KEY);

INSERT INTO #BaseTable (SomeIntegerValue)
SELECT SomeIntegerValue
FROM (VALUES
    (123), (456), (789)) Data (SomeIntegerValue);

CREATE TABLE #RangeLookupTable
    ( RangeStartValue INT PRIMARY KEY
    , RangeEndValue INT NOT NULL);

INSERT INTO #RangeLookupTable (RangeStartValue, RangeEndValue)
SELECT RangeStartValue, RangeEndValue
FROM (VALUES
      (0, 100), (101, 200), (201, 300)
    , (301, 400), (401, 500), (501, 600)
    , (701, 800), (901, 1000)) Data (RangeStartValue, RangeEndValue);

SELECT *
FROM #BaseTable bt
JOIN #RangeLookupTable rlt
    ON bt.SomeIntegerValue BETWEEN rlt.RangeStartValue …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server query-optimization

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

PowerShell脚本可以编写SQL Server Reporting Services RDL文件吗?

是否可以使用PowerShell编写SQL Server 2008中的SQL Server Reporting Services rdl文件?如果是这样,有人可以提供这样做的代码示例吗?这将是使用第三方工具编写由商业智能部门之外的业务用户创建的RDL文件的有用替代品.

澄清术语"脚本"

通过"脚本输出",我的意思是我想为服务器上的每个报告自动生成基础RDL文件.例如,在BIDS中编写报表时,您将生成RDL文件.将文件部署到服务器时,文件以某种方式导入SQL Server ReportServer数据库,它不再是单独的物理RDL文件.我想以RDL文件格式从服务器中提取所有报告.

我使用RSScripter工具将报告提取为RDL文件,因此我知道可以使用PowerShell以外的工具.我特别想知道是否可以使用PowerShell来实现它,如果是这样,请获取代码示例来执行此操作.

澄清为什么我想要生成RDL版本的报告

为什么将报告"编写"到RDL文件很重要?我希望每晚一次将RDL文件签入我的源代码管理系统,以跟踪我的商业智能部门以外的用户创建的所有报告.自从我们在BIDS中开发报告以来,我已经跟踪了我部门生成的所有报告,但我无法跟踪在线报告生成器工具中构建的报告的版本历史.

澄清为什么以权力而不是为了

  1. 好奇心.我有一个问题,我知道可以通过两种方法之一(API或RSSCripter)解决,我想知道它是否可以通过第三种方法解决.

  2. 有机会通过PowerShell扩展我的问题解决工具包.使用PowerShell解决此问题可能为学习如何使用PowerShell解决我尚未尝试解决的其他问题奠定了基础.

  3. PowerShell对我的团队和我来说更容易理解.通常,我和我的团队成员比.NET代码更容易理解PowerShell代码.虽然我知道这个问题可以通过一些使用API​​的.NET代码解决(毕竟RSScripter的工作方式),但我觉得编写和维护PowerShell脚本会更容易.我也意识到PowerShell脚本可能会使用.NET代码,但我希望PowerShell已经能够以某种方式处理对象等报告,因此我不必使用Reporting Services API来提取文件.

  4. RSScripter尚不支持2008.在过去,我使用RSScript编写报告脚本.不幸的是,它似乎还没有支持2008年.这意味着我现在必须针对API编写代码,因为这是我呈现的唯一方式,知道如何以自动无人值守的方式提取文件.

powershell service reporting reporting-services

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

SSRS:相对URL超链接

在SSRS 2008中,我想创建一个相对路径URL.长话短说我有一个订阅,它将几千个静态HTML页面输出到一个用作网站内容的文件夹.在过去,我使用文本框属性 - >操作 - >转到URL,为网站上的其他页面创建了完整的URL(实际上是子报告).我想修改我的代码,以便它返回目标的相对路径而不是完整的URL.这将通过更改网站域或文件夹结构来减少某人最终破坏导航的可能性.当我尝试使这项工作时,之前可点击的对象不再是可点击的. 如何使SSRS超链接跳转到相对URL而不是完全限定的URL?

这是有效的:

="https://some.domain.com/some_page/" + Fields!Custom_Page_Name.Value.ToString() + ".html"
Run Code Online (Sandbox Code Playgroud)

这是不起作用的:

="../" + Fields!Custom_Page_Name.Value.ToString() + ".html"
="/" + Fields!Custom_Page_Name.Value.ToString() + ".html"
=Fields!Custom_Page_Name.Value.ToString() + ".html"
="..\" + Fields!Custom_Page_Name.Value.ToString() + ".html"
="\" + Fields!Custom_Page_Name.Value.ToString() + ".html"
Run Code Online (Sandbox Code Playgroud)

reporting-services ssrs-2008

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

如何使用具有多值参数的String.Filter

在"公共功能 - >文本 - >项目下的SQL Server Reporting Services 2008 R2中的表达式构建器"窗口中,有一个名为Filter的表达式.这似乎与.NET框架中的Strings.Filter方法相对应.Filter的描述如下:

返回一个从零开始的数组,该数组包含基于指定过滤条件的String数组的子集.

示例如下:

=Filter(Parameters!MultivalueParameter.Value, "3", True, CompareMethod.Binary)
Run Code Online (Sandbox Code Playgroud)

示例和说明意味着您可以检查多值参数,以查看是否至少有一个选定值等于Match参数.我无法让它返回除#Error以外的任何内容,这意味着多值参数不是一维数组.参数!MultivalueParameter.Value.GetType().ToString()返回System.Object [].

有谁知道如何让这个工作?我正在使用以下工作来检查是否在多值参数中选择了值:

=IIF(InStr(" " + JOIN(Parameters!MultivalueParameter.Value, " ") + " ", " 3 ", CompareMethod.Text), false, true)
Run Code Online (Sandbox Code Playgroud)

上面的代码有效,但它非常难看.如果它支持这种检查,我宁愿使用Filter函数.任何人都可以提供一个有效的代码示例吗?

vb.net arrays string ssrs-2008

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

访问Visual Studio中的路径错误

SQL Server 2008 R2累积更新5/SP1/SQL Server 2012 RTM解决了此问题


在我尝试构建Reporting Services项目作为在Visual Studios中部署或预览报表的一部分时,我收到以下错误:

访问路径'C:\ My Solution Folder\bin\Debug\My Report.rdl'被拒绝.

似乎发生的事情是\ bin\Debug \文件夹中的文件已更改为只读.我可以通过删除受影响文件上的只读标志来"修复"症状.我想找到一种方法来完全避免这个错误,因为这通常每天发生多次.

我验证文件没有保存到我的源代码控制系统,所以看起来我的源代码控制插件似乎不会导致这个问题.问题似乎是从SQL Server 2008 R2开始的,这是有道理的,因为我非常确定在此版本的Reporting Services项目之前,\ bin\Debug \文件夹不存在.

我尝试将项目OutputPath更改为不在项目文件夹下的路径,但Visual Studios不允许我这样做.

bids visual-studio sql-server-2008-r2

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

隔离存储异常:无法确定域的标识

我在SQL Server 2012 SP1 Reporting Services实例中设置了一个订阅,该实例将34MB文件导出到Excel 2007-2013 XLSX OpenXML渲染扩展.订阅会引发以下错误:

System.IO.IsolatedStorage.IsolatedStorageException:无法确定域的标识.

我确认可以将报表从Report Manager导出到Excel 2007-2013 XLSX OpenXML渲染扩展,没有任何问题.仅在通过订阅执行报表时才会出现此错误.我研究了这个并在网上找到了以下建议:

  1. 两个单独的Microsoft Connect错误报告764356764556没有列出的解决方法.

  2. 建议错开订阅,以便一次只运行一个订阅.这没有用,因为在发生错误时只运行了一个订阅.

  3. 建议使用Excel 2003呈现方法并将行分成单独的选项卡以避免65,536行限制.我确实证实了这一点,但从业务利益相关者的角度来看,这不是一个可接受的解决方案.

  4. 表示使用Excel 2007-2013渲染方法的任何报表的注释超过10 MB大小,从内存中生成切换到使用独立存储.没有解释为什么这是坏的,我认为这是有充分理由 - 也许是为了限制RAM消耗.

  5. 建议在ASP.NET应用程序的Isolated Storage文件夹中提升用户的权限.我找不到Isolated Storage文件夹在Re​​porting Services中的位置.

  6. 建议使用额外的代码包装ASP.NET的隔离存储代码,以绕过此问题.我找不到将此解决方案应用于Reporting Services的方法,因为这是Microsoft提供的产品.

  7. 建议修改Report Manager和Report Server web.config文件,以在httpRuntime节点中包含maxRequestLength ="200000".这没有改变结果.

  8. 建议在RSReportServer.config中显式增加内存设置.这似乎不会有所帮助,因为错误与隔离存储有关,但我尝试了它的解压缩.这没有改变结果.

  9. 建议将DatabaseQueryTimeout值从120更改为更大的值.这没有改变结果.

  10. 建议更改订阅执行超时值.这没有改变结果.

以下是完整错误日志条目的副本:

reportrendering!WindowsService_5!1628!04/03/2013-09:48:33:: e ERROR: Throwing Microsoft.ReportingServices.ReportProcessing.UnhandledReportRenderingException: , Microsoft.ReportingServices.ReportProcessing.UnhandledReportRenderingException: An error occurred during rendering of the report. ---> Microsoft.ReportingServices.OnDemandReportRendering.ReportRenderingException: An error occurred during rendering of the report. ---> System.IO.IsolatedStorage.IsolatedStorageException: Unable to determine the identity of domain.
   at System.IO.IsolatedStorage.IsolatedStorage._GetAccountingInfo(Evidence …
Run Code Online (Sandbox Code Playgroud)

sql-server reportserver reporting-services sql-server-2012

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

动态数据Web应用程序:如何更改默认筛选器以使其显示超过10行?

动态数据Web应用程序

如何更改默认筛选器以使其显示超过10行?

我最近创建了一个动态数据网站,以帮助管理我的商业智能数据仓库的几十个查找表,我无法操作模板.我想使详细信息页面中显示的默认行数超过10行.虽然我发现数据网格的一部分允许我更改过滤器下拉列表,但我仍然无法找到强制数据网格仅显示10行的代码.如何更改动态数据网站标准模板中数据网格显示的默认行数?

dynamic-data asp.net-3.5

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

一个SQL Server实例,两个服务器名称

我正在退休传统的Microsoft SQL Server,如果我将其余的数据库迁移到另一台服务器SQL Server Y,我有机会退出我现有的SQL服务器SQL Server X.不幸的是,仍有许多未记录的进程引用了SQL Server X,此时我无法承受.这引出了我这个问题:

是否有可能使SQL Server Y像今天一样继续工作而不更改它的名称并以某种方式将SQL Server X的旧名称变为SQL Server Y的别名?

目标是从我的域中删除一台服务器,并使另一台服务器接受SQL Server数据库连接,就像它是原始服务器一样.在我最终退出两台服务器之前,这会让我花费几个月的时间.从概念上讲,这似乎是可能的,因为计算机名称已经是IP地址的别名,但实际上这可以对SQL Server数据库实例名称进行.

sql-server

0
推荐指数
1
解决办法
1355
查看次数