我必须在遗留数据库的表中插入一些记录,并且由于它被其他古代系统使用,因此更改表不是解决方案.
问题是目标表有一个int主键但没有标识规范.所以我必须找到下一个可用的ID并使用它:
select @id=ISNULL(max(recid)+1,1) from subscriber
Run Code Online (Sandbox Code Playgroud)
但是,我想阻止其他应用程序在我执行此操作时插入到表中,以便我们没有任何问题.我试过这个:
begin transaction
declare @id as int
select @id=ISNULL(max(recid)+1,1) from subscriber WITH (HOLDLOCK, TABLOCK)
select @id
WAITFOR DELAY '00:00:01'
insert into subscriber (recid) values (@id)
commit transaction
select * from subscriber
Run Code Online (Sandbox Code Playgroud)
在SQL Management Studio中的两个不同的窗口中,一个事务总是作为死锁牺牲品被杀死.
我也先尝试过SET TRANSACTION ISOLATION LEVEL SERIALIZABLE相同的结果......
有什么好的建议,我怎么能确保我得到下一个id并使用它而不用担心其他人(或我!)被冲洗?
很抱歉没有提到这个,但这是一个SQL 2000服务器所以我不能使用像FOR UPDATE和OUTPUT这样的东西
BEGIN TRANSACTION
DECLARE @id int
SELECT @id=recid
FROM identities WITH (UPDLOCK, ROWLOCK)
WHERE table_name = 'subscriber'
waitfor delay '00:00:06'
INSERT INTO subscriber (recid) values (@id)
UPDATE identities …Run Code Online (Sandbox Code Playgroud) 如何检查Linq.DataContext对象是否填充了数据并且没有出现连接错误?
谢谢.
现在我用Guids了.
我当然记得,在某些地方的代码中,这种隐式转换是有效的,而在其他地方却没有.直到现在我都没有看到这种模式.
编译器如何决定它何时不能?我的意思是,类型方法Guid.ToString()存在,不需要在需要这种转换时调用它吗?
有人可以告诉我在什么情况下这种转换是自动完成的,当我必须myInstance.ToString()明确调用时?
我有一个程序,需要一个TObject类型的参数,如下所示:
MyProcedure (const AValue : TObject);
Run Code Online (Sandbox Code Playgroud)
我有一个Variant数组,我正在循环调用该过程,如下所示:
for i:=0 to High(myArray) do
MyProcedure (myArray[i]);
Run Code Online (Sandbox Code Playgroud)
编译器给出错误说:"不兼容的类型:TObject和Variant".
我该怎么做才能解决这个问题?
更多信息:到目前为止,我一直在变量数组中传递简单类型(字符串,数字,日期)(数组通常是不同类型的混合 - 我最终将它们作为参数传递给数据库存储过程).现在我还需要(在某些情况下)传递一个TObject.
传递值的最合适的数据类型/结构是什么,它可以包含简单类型和对象?我想我可以创建自己的TParam类型,它有两个字段,但我不确定确切的语法.有人有这方面的例子吗?
我们有几个框架的GUI,可动态构建其内容.每个框架都会创建面板,标签,编辑,组合框等,以用作输入字段.这非常有效,我们还计划让每个框架在不同的线程中构建其内容.
但是有一个大问题:它很慢!创建控件不需要花时间,但设置Parent属性似乎非常耗时.
我已经尝试了几种方法来加快这个过程,但没有运气.我尝试过Enabled = False,Visible = False,DisableAlign,LockWindowUpdate,WM_SETREDRAW ......但似乎没有任何事情影响设置控件的Parent的耗时过程.
即使我们使用线程,这也需要时间,因为必须在Synchronize中调用VCL函数.
有没有其他方法可以加快控件的创建和显示速度?
亲切的问候,马格努斯
编辑:没有数据感知组件或GUI中触发的任何事件.我只是创建控件并显示它们.使用计时器我已经确定控件父(AControl.Parent:= AOwner)的分配是耗时的部分.
编辑2:如下面的答案所示,速度问题不是设置父级而是绘制控件.当我测试时间时,容器是可见的并且设置父级导致立即绘制控件.
编辑3:动态GUI的另一个耗时部分是将项目分配给组合框.ComboBox.Items.Assign(DataItems),其中DataItems不超过三到六个项目.
谢谢大家抽出时间帮助我!
我有一组带有附加命令和逻辑的控件,它们以相同的方式不断重用.我决定创建一个包含所有常用控件和逻辑的用户控件.
但是我还需要控件才能保存可以命名的内容.我尝试了以下方法:
<UserControl.ContentTemplate>
<DataTemplate>
<Button>a reused button</Button>
<ContentPresenter Content="{TemplateBinding Content}"/>
<Button>a reused button</Button>
</DataTemplate>
</UserControl.ContentTemplate>
Run Code Online (Sandbox Code Playgroud)
但是,似乎无法命名放置在用户控件内的任何内容.例如,如果我以下列方式使用控件:
<lib:UserControl1>
<Button Name="buttonName">content</Button>
</lib:UserControl1>
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
无法在元素"Button"上设置Name属性值"buttonName".'Button'属于元素'UserControl1'的范围,在另一个范围内定义时,已经注册了一个名称.
如果我删除buttonName,然后编译,但我需要能够命名内容.我怎样才能做到这一点?
我正在尝试为基于CakePHP的网站上的某些操作启用SSL.我正在使用requireSecure()并在相应的blackHoleCallback()中重定向到https:// url.
为了减少服务器负载,我想在用户完成需要SSL的操作后重定向回http:// whatever_url.
我该怎么做呢?
我的python项目有一个C++组件,它在Python egg中作为.pyd文件进行编译和分发.我注意到它似乎与我们的一些全新的64位Windows服务器不兼容.我们有4台(据称)相同配置的机器 - 每台机器运行Windows 2003服务器64位版本,但其中2台机器不允许我调用鸡蛋中的功能.
经过一些实验,我能够找到一个产生可重现错误的配方.当Python尝试导入pyd文件时,似乎会出现此问题.
我将pyd复制到临时文件夹并从该位置运行Python.exe,顺便说一句,我们仍在使用32位版本的Python 2.4.4,因为我们的库都没有移植到64位架构.接下来我尝试导入我的模块(称为pyccalyon).我第一次尝试这个时收到一条错误消息:
"ImportError: DLL load failed: The specified module could not be found"
Run Code Online (Sandbox Code Playgroud)
下次我尝试这个时,python解释器崩溃了:没有堆栈跟踪!
当然你怀疑我的PYD - 关于这一点的奇怪之处在于它已经在数千台PC和10台其他服务器上使用,其中许多是相同规格的64位机器.该项目在开发和发布后都会不断进行测试,所以如果这个东西非常不稳定,我们很久以前就会知道它.这个组件被认为是稳定的代码,所以令人惊讶的是,它的突破性非常强大.
有什么建议我可以做什么来调试这个麻烦的库?在这一点上,疯狂的想法很受欢迎,因为我们已经用尽了所有明智的想法.
谢谢!
更新0:好的使用进程监视器我能够将一个失败的64位服务器与另一个运行良好的服务器进行比较.我发现破损似乎是由于缺少DLL,SysWOW64/mscoreee.dll而发生的 - 任何想法这个组件是什么以及我可以在哪里得到它?我可以将这个问题反馈给我们可以安装东西的IT配置人员.
为了响应错误传递页面的错误,我们正在考虑从Apache + Tomcat切换到Glassfish.这不是受到功能的启发,而是受到一种不会消失的故障的挫败感.
问题是:
我们应该使用Glassfish与Apache合作,还是完全取代Apache?Apache和Tomcat之间的接口显然与我们看到的错误有关,我们最不需要的是再次出现同样的问题.另一方面,我们需要PHP,Apache已经设置好处理.
我们应该使用Glassfish 2还是3?版本3似乎是一个完全重写,这里和其他地方的评论表明很多人都坚持2.
Apache和Glassfish在同一台服务器上的合作能力如何?例如,Apache可以简单地将ProxyPass所有域的所有请求转移到Glassfish(而不是现在正在执行的更具体的Tomcat代理).
有没有更简单的方法?我讨厌无所事事地完成所有这些工作.
这个问题是否属于serverfault.com?
我想过滤掉包含指定字符串的消息.我用过,log4net.Filter.StringMatchFilter但仅适用于appender.
我想在Logger级别上过滤该消息.这些方面的东西:
<logger name="MyLogger.WebServices">
<level value="Debug" />
<filter type="log4net.Filter.StringMatchFilter">
<stringToMatch value="do not log me" />
<acceptOnMatch value="false" />
</filter>
<appender-ref ref="file" />
<appender-ref ref="debug" />
</logger>
Run Code Online (Sandbox Code Playgroud)
它真的有可能吗?或者有不同的方法来处理这种情况.
c# ×2
delphi ×2
.net ×1
apache ×1
cakephp ×1
connection ×1
controls ×1
deadlock ×1
dynamic ×1
filter ×1
glassfish ×1
https ×1
linq-to-sql ×1
locking ×1
log4net ×1
logging ×1
python ×1
sql ×1
sql-server ×1
ssl ×1
tobject ×1
tomcat ×1
tostring ×1
transactions ×1
variant ×1
windows ×1
wpf ×1
xaml ×1