我有一个存储过程需要设置一个保存点,以便在某些情况下,它可以撤消它所做的一切,并将错误代码返回给调用者,或接受/提交它并将成功返回给调用者.但无论调用者是否已经开始交易,我都需要它.该文件在这个问题上非常混乱.这是我认为可行的,但我不确定所有的后果.
问题是 - 这Stored Procedure (SP)是其他人所称的.所以我不知道他们是否已经开始交易......即使我要求用户开始使用我的SP交易,我仍然对正确使用Save Points...的问题有疑问
我的SP将测试交易是否正在进行,如果没有,请启动一个BEGIN TRANSACTION.如果一个事务正在进行中,它将改为创建一个保存点SAVE TRANSACTION MySavePointName,并保存这就是我所做的事实.
然后,如果我必须回滚我的更改,如果我BEGIN TRANSACTION早点做了,那么我会ROLLBACK TRANSACTION.如果我做了保存点,那么我会ROLLBACK TRANSACTION MySavePointName.这种情况似乎很有效.
这是我有点困惑的地方 - 如果我想保留我已经完成的工作,如果我开始一个事务,我将执行COMMIT TRANSACTION.但是如果我创建了保存点?我试过COMMIT TRANSACTION MySavePointName,但然后调用者尝试提交其事务并收到错误:
COMMIT TRANSACTION请求没有相应的BEGIN TRANSACTION.
所以我当时想知道 - 可以回滚一个保存点(这样可行:ROLLBACK TRANSACTION MySavePointName不会回滚调用者的事务).但也许人们永远不需要"承诺"它?它只是停留在那里,以防你需要回滚它,但一旦原始事务提交(或回滚)就会消失?
如果有一种"更好"的方式来"嵌套"交易,请也提供一些建议.我还没有弄清楚如何嵌套BEGIN TRANSACTION但只是回滚或提交我的内部事务.似乎ROLLBACK总会回滚到顶层事务,而COMMIT只是递减@@trancount.
我正在尝试使用WkWebKit在应用程序和页面之间来回交谈.我可以使用WkWebView evaluateJavascript方法让javaScript执行得很好,但是当我尝试在JavaScript页面上执行window.webkit.messageHandlers.myHandler.postMessage('hello world!')时,我发现window.webkit没有定义.
奇怪......我正在ios 8.4的iPad模拟器中运行.我认为这可以在原版8中使用,不是吗?
我找不到其他任何关于此的帖子,所以也许我做错了什么?
我甚至将我的Safari Developer连接到模拟器的浏览器,在控制台中我试着看看window.webkit是什么,当然,它不存在.
请注意,我添加了一个初始脚本,以便在页面加载时运行(我在javascript编辑器中看到了这一点 - 记录了消息).我还添加了一个脚本消息处理程序......
[编辑:在这里添加更多代码详细信息] 这是我的代码:
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSLog(@"main view Controller viewDidLoad called...");
// if we are running on an OLD ios (pre v8) WKWebView will not exist. So don't create it if it doesn't exist...
if (NSClassFromString(@"WKWebView")) {
// WKWebView cannot be dragged onto storyboard, so have to create it manually here.
// We have a …Run Code Online (Sandbox Code Playgroud) 我几乎意外地发现我的机器正在向波兰的一台机器发送和接收UDP数据包.不是我对波兰有任何问题,我只是不知道为什么我的笔记本电脑需要与那里的服务器通信.反向DNS仅显示ISP向某个最终用户提供地址.使用Wireshark,我可以监视消息,这些消息可能是难以理解的,因为它们可能是加密的.从我的机器发送的所有数据包都有相同的源端口,所以发送它们的应用程序显然打开了这个UDP套接字来使用它.我正在寻找方法:
1)枚举系统中打开的所有当前套接字,包括创建它的进程,对于TCP和UDP,它们当前绑定到哪些端口和地址.
2)因为应用程序可以打开这些套接字,使用它们并立即关闭它们,我很乐意找到(或者甚至可能写入)一个程序,一旦启动就会以某种方式在每次创建套接字时收到通知,或者更重要的是当绑定到源和/或目标地址和端口.对于UDP,我希望能够监视/跟踪套接字已向其发送消息的目标IP地址和端口.
我不想监控流量本身,如果我想查看流量,我有Wireshark.我希望能够交叉引用以发现生成数据包的应用程序.我想知道它是来自我信任的过程,还是我需要进一步调查的过程.
有没有人知道可以做到这一点的任何应用程序(对于Windows平台)?如果没有,有关提供此功能的.NET或Windows API的任何想法,我是否应该自己编写?
编辑: 经过进一步研究 - 看起来像要使用的API是GetExtendedUdpTable和GetExtendedTcpTable,CodeProject.com有一些样本包装在.NET中(参见http://www.codeproject.com/Articles/14423/Getting-the-active- TCP-UDP-connections-using-the-G).因此,需要使用此API和一些嗅探器代码的组合来监视和跟踪使用您计算机上任何特定应用程序正在与之通信的协议的端口上的主机.如果我有空闲时间,我会考虑创建这个,如果你知道一个应用程序完成所有这些,请告诉我.
我没有接受过Linux的培训,但我可以通过一些文档查找来解决问题,但我很难过.
我找到了一个脚本,它有助于在启动时在我的dd wrt路由器上设置日期,但前提是当前日期小于存储日期.如果你愿意,我可以分享整个脚本,但是归结为这个声明在我预期的时候没有评估为真.我将文字放入,而不是变量,它仍然不返回true,它执行"else"语句:
if [ 021715402012 -lt 021815402012 ]
then
echo "the first seems less than the second"
else
echo "the first does not seem less than the second for some reason"
fi
Run Code Online (Sandbox Code Playgroud)
我希望"第一个似乎不到第二个",但事实并非如此......这是一个溢出问题吗?我试着把它变成一个像这样的字符串比较:
if [ x021715402012 -lt x021815402012 ]
Run Code Online (Sandbox Code Playgroud)
并试着把它放在引号中:
if [ "x021715402012" -lt "x021815402012" ]
Run Code Online (Sandbox Code Playgroud)
它总是执行其他.a -lt b如果a小于b," "不是真的吗?
对此有任何见解将不胜感激,我很难过!
有人注意到了吗?iPhone 8.1上最新的Chrome for iOS 8.1.2,userAgent不再包含crIOS字符串.不知道为什么他们摆脱它.它在字符串中也没有"Mobile".我猜这就是为什么一个人不应该依赖userAgent ...
我在Javascript中看到的userAgent是:
Mozilla/5.0(Macintosh; Intel Mac OS X 10_7_3)AppleWebKit/534.53.11(KHTML,与Gecko一样)Version/5.1.3 Safari/534.53.10
crIOS在哪里?
我很困惑.我有一台运行Ubuntu 14.04的虚拟机.我遵循了这里的程序:http://clang.llvm.org/docs/LibASTMatchersTutorial.html,我正处于运行忍者的步骤.这构建了llvm和clang.现在,我的VM并不懈怠,我给了它6GB的RAM和4个CPU以及一个20GB的交换文件.最大的问题出现在链接时 - 它似乎启动了大量的ld进程,每个进程至少使用3-4GB或虚拟内存,并且在某些时候每个进程都有很多CPU.但是交换文件增长到超过12GB并且进程都是IO绑定的,但是我不知道他们是在做一些有用的东西,还是颠簸.我所知道的是磁盘正在受到重创,工作将永远持续下去.我实际上只是把CPU的CPU数量减少到了1,看看它是否可能更有效率和更少的并行性,因为我猜测问题可能是颠簸.
我想我的磁盘可能很慢......有什么想法吗?我应该使用make而不是忍者吗?我的专业知识不是Linux(虽然我到了那里:-))所以我正在学习本教程,但也许不建议使用"最佳"方法来构建clang/llvm程序.
这个简单的例子显示了我遇到的问题,但我不明白为什么......
我正在测试传递给我的字符串参数中第一个字符的位置,该字符是小写字母或大写字母、单个破折号或句点。
这两个模式匹配似乎检查相同的内容,但您自己运行此代码,它会打印 0,然后打印 3:
PRINT PATINDEX ( '%[a-z,A-Z,-,.]%', '16-82')
PRINT PATINDEX ( '%[-,a-z,A-Z,.]%', '16-82')
Run Code Online (Sandbox Code Playgroud)
我不明白为什么它只起作用当破折号字符是我们检查的第一个字符时它才起作用。
这是一个错误吗?或者按照设计工作,但我错过了一些东西......我正在使用 SQL Server 2016,但我认为这并不重要。
ios ×2
javascript ×2
binding ×1
clang ×1
linux ×1
monitoring ×1
patindex ×1
shell ×1
sockets ×1
sql-server ×1
t-sql ×1
transactions ×1
udp ×1
webkit ×1
windows ×1
wkwebview ×1
xcode7 ×1