我有一个IronPython脚本,它针对SQL Server数据库执行一堆SQL语句.语句是大字符串,实际上包含多个语句,由"GO"关键字分隔.当它们从sql管理工作室和其他一些工具运行时可以工作,但不能在ADO中运行.所以我使用2.5"re"模块拆分字符串,如下所示:
splitter = re.compile(r'\bGO\b', re.IGNORECASE)
for script in splitter.split(scriptBlob):
if(script):
[... execute the query ...]
Run Code Online (Sandbox Code Playgroud)
在罕见的情况下,这会打破注释或字符串中的单词"go".如何解决这个问题?即正确地将此字符串解析为两个脚本:
-- this is a great database script! go team go!
INSERT INTO myTable(stringColumn) VALUES ('go away!')
/*
here are some comments that go with this script.
*/
GO
INSERT INTO myTable(stringColumn) VALUES ('this is the next script')
Run Code Online (Sandbox Code Playgroud)
编辑:
我搜索了更多,发现了这个SQL文档:http: //msdn.microsoft.com/en-us/library/ms188037(SQL.90).aspx
事实证明,GO必须按照自己的方式提出一些答案.然而,它后面可以跟一个"count"整数,它实际上会多次执行语句批处理(之前有人实际使用过它),然后可以在同一行上单行注释(但不是多行,我测试了这个.)所以神奇的正则表达式看起来像:
"(?m)^\s*GO\s*\d*\s*$"
Run Code Online (Sandbox Code Playgroud)
除此之外不考虑:
"--"后跟换行符之外的任何字符).我不关心捕获"计数"参数并使用它.现在我有一些技术文档,我非常接近写这个"规范",而且再也不用担心了.
alt text http://img3.imageshack.us/img3/1488/advancedsearch.png
我正在ASP.NET应用程序中构建"高级搜索"界面.我不需要为我写这个东西,但我坚持一个关于动态控件和ViewState的特定问题.我想知道如何处理这个方向.这是我的情况:
配料:
所需的接口功能:
(1)在初始页面加载时,界面获得一个预先配置的Search对象,其中包含一组SearchCriterion对象.它将它们绑定到一组控件中(参见上图).
有些搜索项目更简单,例如:
Field(DropDownList)| 运算符(DropDownList)| 价值(TextBox)
某些字段类型的搜索条件控件具有存储在viewstate中的重要信息,例如:
Field(DropDownList)| 运算符(DropDownList)| 值(DropDownList),其中"值"下拉列表由数据库查询填充.
某些字段是对其他实体的查找,这会导致一系列字段选择器,如:
Field(DropDownList)字段(DropDownList)| 运算符(DropDownList)| 值
(2)用户通过以下方式修改搜索:
(3)最后,用户点击"搜索"以查看他们的结果.
问题:
您可能已经知道如果您正在回答此问题,动态添加到页面的控件将在回发时消失.我已经创建了一个UserControl来操作控件集合并巧妙地完成上面的步骤(1),如附图所示.(显然,我现在并不关心风格.)
但是在Postback上,控件全部消失,我的Search API对象消失了.如果我可以让动态生成的控件集合发挥得很好并坚持使用ViewState,我可以检查回发上的控件,重建Search对象,然后整齐地处理控件事件.
可能的解决方案
我可以使Search对象可序列化并将其存储在viewstate中.然后在页面加载时我可以抓住它并在页面加载时重建控件集合.但是我不确定这是否可以很好地控制引发事件,以及包含数据库数据的下拉列表的视图状态会发生什么 - 我可以把它取回来吗?我不得不在每次回发时重新查询数据库.
我可以为这种事情开发一个自定义服务器控件(请参阅此链接)...但这对我来说是一个新主题,并且会涉及一些学习,而且我不完全确定自定义服务器控件是否可以再工作很好地与非固定控件集合.有人知道吗?
我想我可能能够使用数据绑定控件实现这一点 - 例如,我可以将我的标准集合绑定到具有固定控件集合的转发器(可能隐藏未使用的"值"控件,使用内部转发器"字段"下拉列表).那么所有的信息都会保留在ViewState中......对吗?
任何新的想法将不胜感激.
谢谢你的帮助.b.Fandango
我想在D3中以一种强制导向的图形布局添加一种行为,这种方式一旦掉落,拖放的svg节点就会粘在它的位置,无论图形中发生什么,都不再改变位置.我已经完成了关于这个API的一些阅读,但我无法找到一种方法来使这个工作.
我试图解决的问题是允许用户"挑选"复杂的力图.
我正在连接供应商提供的Web ASMX服务并通过网络发送一组数据.当您向项目添加服务引用时,我的第一次尝试达到了默认情况下Visual Studio在app.config文件中引发的1分钟超时.我把它增加到10分钟,另一次超时.1小时,另一个超时:
Error: System.TimeoutException: The request channel timed out while waiting for
a reply after 00:59:59.6874880. Increase the timeout value passed to the call to
Request or increase the SendTimeout value on the Binding. The time allotted to
this operation may have been a portion of a longer timeout. ---> System.TimeoutE
xception: The HTTP request to 'http://servername/servicename.asmx' has exceeded the allotted timeout of 01:00:00. The time allotted to this
operation may have been a portion of a longer timeout. …Run Code Online (Sandbox Code Playgroud) 我已经用jQuery编写针对ASP.NET Web API的代码了一段时间,我在Angular中开始了一些新的东西(针对相同的Web API后端编写.)
我正在发布一个方法,该方法将返回系统中实体的一些搜索结果.它看起来像这样:
public IEnumerable<dynamic> Post(string entity, FormDataCollection parameters)
{
// entity is passed on the route.
// parameters contains all the stuff I'm trying to get here.
}
Run Code Online (Sandbox Code Playgroud)
如果我使用jQuery.post调用该方法:
$.post('api/search/child', {where : 'ParentID = 1'}, function(d){ foo = d });
Run Code Online (Sandbox Code Playgroud)
它运作正常,并返回我期望的.
我在我的角度应用程序中提供了一个类似的调用服务:
$http.post('api/search/child', { where: 'parentID = ' + parent.ID })
.success(function (data, status, headers, config) {
// etc.
})
Run Code Online (Sandbox Code Playgroud)
但是当它在服务器上点击我的"Post"方法时,"paramters"为空.
经过一些谷歌搜索后,我尝试添加一个内容类型的标题,以确保它作为JSON传递,并尝试JSON.stringify-ing和$ .param() - "数据"参数,但没有做任何事情(和从我所读到的那些不应该是必要的.)我在这里做错了什么?谢谢你的帮助!
更新:这是来自(工作)jQuery示例的原始请求:
POST http://localhost:51383/api/search/child HTTP/1.1
Accept: */*
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Referer: …Run Code Online (Sandbox Code Playgroud) 我在我的 asp.net core 应用程序中设置了一个中间件,以自动将控制器操作包装在事务中。
public async Task Invoke(HttpContext context, MyDataContext dbContext)
{
if (context.Request.Method == "GET")
{
await _next(context);
}
else
{
using (var transaction = await dbContext.Database.BeginTransactionAsync())
{
try
{
await _next(context);
transaction.Commit();
}
catch (Exception)
{
transaction.Rollback();
throw;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我有一种控制器方法(将来可能会有更多)不应在事务中运行。让控制器操作“选择退出”中间件功能的最佳方法是什么?
在控制器方法上放置一个像 [NoTransaction] 这样的自定义属性会很好。但是,我无法确定是否有任何方法可以从中间件的 Invoke() 方法中准确解析将调用哪个控制器操作(这将使我能够从该方法中提取属性并确定是否创建事务.) 正确的方法是什么?
我使用标准代码注册了一个Entity Framework DBContext,如下所示:
public void ConfigureServices(IServiceCollection services)
{
[...]
services.AddDbContext<MyDbContextType>(ServiceLifetime.Scoped);
}
Run Code Online (Sandbox Code Playgroud)
这对于需要EF服务的控制器调用的服务非常有用.
但是我有几个特殊的控制器.它们在运行超过Web请求生命周期的新线程上启动作业.当这些作业使用我的DbContext(或使用使用我的DbContext的服务)时,会抛出错误,因为已经处理了作用域实例.
有没有办法覆盖我注入的DbContext的服务生命周期只是为了某些控制器?或者您可以建议另一种解决方案吗?
我使用的应用程序与Microsoft的ReportBuilder 3.0(SQL Server Reporting Services的一部分)集成.ReportBuilder是Microsoft ClickOnce应用程序.我们官方支持的浏览器是Firefox,Chrome和某些版本的IE.
Microsoft提供官方Firefox插件(Microsoft .NET Framework Assistant),但Chrome没有.直到最近,我们已经指示用户安装您可以在此处看到的开源扩展:https://github.com/rajkosto/ChromeClickOnce
该扩展程序已从Chrome网上应用店中删除,我的理解是Chrome正在从浏览器中删除所有NPAPI功能.我们的用户在Chrome中使用我们的产品时无法再使用ReportBuilder,这对我们来说是个大问题.
有没有办法让ClickOnce再次在Chrome中运行?我们不能成为唯一遭受这个问题的人.感谢您提供的任何建议.
我正在使用 SSRS 2008 制作用于标签打印的东西。我想利用页面上的所有水平和垂直空间来容纳尽可能多的标签,所以我想我可能需要多个报告列。
这篇技术网文章会让您相信您可以设置报告列的数量,以在“报告属性”窗口中创建所谓的“新闻稿样式列”。如果我在 Visual Studio 2008 安装中打开报表设计器并单击顶部菜单中的报表 -> 报表属性,我会看到:

我找不到与列相关的任何内容,并且此页面上的其他设置的组合不会使其更改为多列(是的,我正在呈现为 PDF,而不仅仅是检查 HTML 预览。)有任何想法吗?
谢谢你的帮助!
我想设置一个安全情况,我的数据库用户("ApplicationUser")有权在架构中创建,更改和删除视图.
如果我执行该声明
GRANT ALTER ON SCHEMA :: MySchema TO ApplicationUser;
Run Code Online (Sandbox Code Playgroud)
然后连接到数据库并执行语句:
CREATE VIEW [MySchema].[MyView] AS SELECT * FROM SomeTable
Run Code Online (Sandbox Code Playgroud)
我收到错误消息
CREATE VIEW permission denied in database 'MyDatabase'.
Run Code Online (Sandbox Code Playgroud)
是否可以按照我想要的方式配置安全性,还是必须在整个数据库上授予"ALTER"?或者是其他东西?
谢谢你的帮助!
给出一个如下所示的xml文档:
<parentRecords>
<parentRecord field1="foo" field2="bar">
<childRecord field1="test" field2="text" />
<childRecord field1="test2" field2="text2" />
</parentRecord>
<parentRecord field1="foo2" field2="bar2">
<childRecord field1="test3" field2="text3" />
<childRecord field1="test4" field2="text4" />
</parentRecord>
</parentRecords>
Run Code Online (Sandbox Code Playgroud)
SQL Server 2005中将此文档传递给存储过程的最快方法是什么,该存储过程将父记录和子记录插入到一组表中,其中父表具有标识列,子表引用父表一把外键?
ParentTable
-----------
ParentID identity PK int
Field1 nvarchar
Field2 nvarchar
ChildTable
----------
ChildID identity PK int
ParentID FK int
Field1 nvarchar
Field2 nvarchar
Run Code Online (Sandbox Code Playgroud)
我正在使用ADO.NET和.NET 3.5与C#.我可以选择将数据作为xml参数类型或文本类型发送.我可以使用新奇的sql 2005 XQuery东西或oldschool SQL 2000 OPENXML样式.或者,如果实际上可以使用SqlBulkInsert或类似的东西来完成这些插入,那么我最沮丧的是(在这种情况下性能很重要.)感谢您的帮助!
编辑:
看起来插入父/子集确实看起来很困难.我无法尝试学习LINQ to SQL并将该框架集成到我的产品中(我们在这里处于开发周期!)并且我无法在Xml批量插入工具中获得太多牵引力,尽管它看起来像可以用于此目的.最后,我重新构建了表以在两个表上使用GUID主键,并在API中生成完整记录.然后我能够使用ADO 2.0 SqlBulkInsert高速发送数据.答案授予Daniel Miller,因为SQL Server Bulk Load在没有重新构建我的应用程序的情况下获得成功的机会最大.
.net ×2
asp.net-core ×2
c# ×2
sql-server ×2
ado.net ×1
angularjs ×1
asp.net ×1
bulkinsert ×1
clickonce ×1
d3.js ×1
dynamic ×1
force-layout ×1
graph ×1
javascript ×1
layout ×1
python ×1
regex ×1
search ×1
ssrs-2008 ×1
timeout ×1
viewstate ×1
wcf ×1
wcf-client ×1
web-services ×1
xml ×1