是否可以使用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中开发报告以来,我已经跟踪了我部门生成的所有报告,但我无法跟踪在线报告生成器工具中构建的报告的版本历史.
澄清为什么以权力而不是为了
好奇心.我有一个问题,我知道可以通过两种方法之一(API或RSSCripter)解决,我想知道它是否可以通过第三种方法解决.
有机会通过PowerShell扩展我的问题解决工具包.使用PowerShell解决此问题可能为学习如何使用PowerShell解决我尚未尝试解决的其他问题奠定了基础.
PowerShell对我的团队和我来说更容易理解.通常,我和我的团队成员比.NET代码更容易理解PowerShell代码.虽然我知道这个问题可以通过一些使用API的.NET代码解决(毕竟RSScripter的工作方式),但我觉得编写和维护PowerShell脚本会更容易.我也意识到PowerShell脚本可能会使用.NET代码,但我希望PowerShell已经能够以某种方式处理对象等报告,因此我不必使用Reporting Services API来提取文件.
RSScripter尚不支持2008.在过去,我使用RSScript编写报告脚本.不幸的是,它似乎还没有支持2008年.这意味着我现在必须针对API编写代码,因为这是我呈现的唯一方式,知道如何以自动无人值守的方式提取文件.
这个特殊的例子与Python中的Django有关,但应该适用于支持异常的任何语言:
try:
object = ModelClass.objects.get(search=value)
except DoesNotExist:
pass
if object:
# do stuff
Run Code Online (Sandbox Code Playgroud)
Django模型类提供了一个简单的方法get,它允许我从数据库中搜索一个且只有一个对象,如果它发现或多或少会引发异常.如果可以使用替代过滤器方法找到零或更多,则返回列表:
objects = ModelClass.objects.filter(search=value)
if len(objects) == 1:
object = objects[0]
# do stuff
Run Code Online (Sandbox Code Playgroud)
我是否过度厌恶异常?对我而言,这个例外似乎有点浪费,据猜测,四分之一到一半的时间将是"特殊的".我更喜欢一个在失败时返回None的函数.我会更好地使用Django的过滤方法并自己处理列表吗?
每次我编写一个gui(在我的情况下使用GWT,之前从未接触过gui编程),我注意到当应用程序变得更复杂时,我的代码变得很乱.
查看我的代码并让对象构造函数中的所有这些setter头疼并且将这些混乱抛在一起真是令人沮丧.
我正在使用MVC模式,它确实有助于更清楚.不幸的是,我的整个视图组件在任何时候都不清楚.;-)我尝试使用大量接口从构建过程中抽象出来,并且只有几个实现的接口将被添加到一起,(我想我可以轻松地在不同的库之间切换,如Gwt-Ext和Gxt)但我仍然不是很开心.
我相信你也遇到了这个问题,我想问你为了获得更清晰的代码而遵循什么样的做法?除了MVC之外,gui编码是否有设计模式?您的高可读性和漂亮的用户界面代码的技巧是什么?
在某种意义上,使用显式编译指示或依赖或使用自动矢量化来手动矢量化代码是否更好?为了使用自动矢量化获得最佳性能,必须监视编译器输出以确保循环被矢量化或修改它们直到它们是可矢量化的.
使用手动编码,可以确定正在发出所需的指令,但现在代码可能不可移植(无论是其他架构还是其他编译器).
我一直在决定如何在我的应用程序中处理异常.
如果我的异常问题来自1)通过远程服务访问数据或2)反序列化JSON对象.不幸的是,我不能保证这些任务中的任何一个都成功(切断网络连接,不正确的JSON对象,这是我无法控制的).
因此,如果我遇到异常,我只需在函数内捕获它并返回FALSE给调用者.我的逻辑是,所有调用者真正关心的是任务是否成功,而不是为什么它不成功.
这是典型方法的一些示例代码(在JAVA中)
public boolean doSomething(Object p_somthingToDoOn)
{
boolean result = false;
try{
// if dirty object then clean
doactualStuffOnObject(p_jsonObject);
//assume success (no exception thrown)
result = true;
}
catch(Exception Ex)
{
//don't care about exceptions
Ex.printStackTrace();
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
我认为这种方法很好,但我真的很想知道管理异常的最佳实践是什么(我应该在调用堆栈中一直冒出异常吗?).
总结关键问题:
跟进/编辑
感谢所有反馈,在网上找到了一些关于异常管理的优秀来源:
似乎异常管理是根据上下文而变化的事情之一.但最重要的是,人们应该如何管理系统中的异常.
另外注意通过过多的尝试/捕获代码腐烂或不给予例外它的尊重(例外是警告系统,还需要警告什么?).
此外,这是m3rLinEz的一个很好的选择评论.
我倾向于同意Anders Hejlsberg和你的看法,大多数来电者只关心操作是否成功.
从这个评论中,它提出了一些在处理异常时要考虑的问题:
如何在数据库中找到表的依赖关系?
通常sp_depends会为特定对象上的所有依赖对象提供信息,或者通过GUI工具以更加结构化的方式查看它.现在,这些方法显示的依赖关系仅限于一个数据库 - 如果我们在其他数据库中有依赖项,该怎么办?
有没有查询呢?
[编辑]嗯.也许这个问题应该标题为"CocoaTouch中调用的默认用户输入对话框视图是什么?" 我意识到我可以创建一个完全符合我想要的视图,并将其包装在视图控制器和presentModalView中 - 但我有点希望有一个标准的,普通的用户输入"对话框"视图 - 与Cocoa-touch."输入您的姓名","输入要搜索的文字"等,都是非常常见的事情!
无论如何......这是我最初提出的问题:
这段代码:
UIAlertView* find = [[UIAlertView alloc] init];
[find setDelegate:self];
[find setTitle:@"Find"];
[find addButtonWithTitle:@"Cancel"];
[find addButtonWithTitle:@"Find & Bring"];
[find addButtonWithTitle:@"Find & Go"];
[find addButtonWithTitle:@"Go To Next"];
[find addSubview:_findText];
CGRect frm = find.frame;
int height = frm.size.height + _findText.frame.size.height + 100; // note how even 100 has no effect.
[find setFrame:CGRectMake(frm.origin.x, frm.origin.y, frm.size.width, height)];
[find setNeedsLayout];
[find show];
[find release];
Run Code Online (Sandbox Code Playgroud)
生成此警报视图:
查找提醒http://www.publicplayground.com/IMGs/Misc/FindAlert.png
(我从emi1Faber的这个问题的代码开始,它的工作方式与广告一样;但是,正如我在评论中所述,取消按钮覆盖了文本字段.)
如何重新调整所有内容以使文本字段正确匹配?[findAlert setNeedsLayout]似乎没有做任何事情,即使在我[findAlert setFrame:tallerFrame]之后.提示?
谢谢!
有没有办法通过由对象的多个属性组成的c#在asp.net中创建下拉列表的datatextfield属性?
public class MyObject
{
public int Id { get; set; }
public string Name { get; set; }
public string FunkyValue { get; set; }
public int Zip { get; set; }
}
protected void Page_Load(object sender, EventArgs e)
{
List<MyObject> myList = getObjects();
ddList.DataSource = myList;
ddList.DataValueField = "Id";
ddList.DataTextField = "Name";
ddList.DataBind();
}
Run Code Online (Sandbox Code Playgroud)
我想要不要使用"名称",而是"名称(Zip)",例如.
当然,我可以更改MyObject类,但我不想这样做(因为MyObject类在模型类中,不应该在UI中做我需要的东西).
我正在使用Apache 2.我知道如何处理.pl文件为"cgi-script",但mod_perl应该更快.我成功构建并安装了mod_perl,但是如何更改httpd.conf以便.pl文件将由mod_perl处理(而不是作为cgi-script)?
c# ×2
exception ×2
java ×2
apache ×1
asp.net ×1
cocoa-touch ×1
data-binding ×1
django ×1
gcc ×1
gwt ×1
loops ×1
mod-perl ×1
optimization ×1
p2p ×1
perl ×1
powershell ×1
python ×1
reporting ×1
service ×1
sql-server ×1
voip ×1