我正在尝试通过Dapper通过存储过程运行SQL备份(我的应用程序的其余部分使用Dapper,所以我更喜欢让这部分继续运行它).它工作得很好,直到CommandTimeout启动.
using (var c = SqlConnection(connstring))
{
c.Open();
var p = new DynamicParameters();
// fill out p
c.Execute("xp_backup_database", p, commandType: CommandType.StoredProcedure);
}
Run Code Online (Sandbox Code Playgroud)
我知道的唯一CommandTimeout设置是在SqlCommand中.有没有办法通过Dapper设置?
$ cat e.py
raise Exception
$ python e.py
Traceback (most recent call last):
File "e.py", line 1, in <module>
raise Exception
Exception
$ echo $?
1
Run Code Online (Sandbox Code Playgroud)
我想将此退出代码从1更改为3,同时仍然转储完整的堆栈跟踪.最好的方法是什么?
(此代码在C#中使用Dapper Dot Net)
此代码有效:
var command = "UPDATE account SET priority_id = @Priority WHERE name = @Name";
connection_.Execute(command, new { Name = "myname", Priority = 10 } );
Run Code Online (Sandbox Code Playgroud)
此代码抛出SqlException:
class MyAccount
{
public string Name;
public int Priority;
}
var command = "UPDATE account SET priority_id = @Priority WHERE name = @Name";
var acct = new MyAccount { Name = "helloworld", Priority = 10 };
connection_.Execute(command, acct);
Run Code Online (Sandbox Code Playgroud)
System.Data.SqlClient.SqlException:必须声明标量变量"@Priority".
为什么?
open(my $fh, '>', $path) || die $!;
my_sub($fh);
Run Code Online (Sandbox Code Playgroud)
my_sub()能以某种方式从$ fh推断出$ path吗?
我在Ruby中有一个任意方法,它产生多个值,因此可以将它传递给一个块:
def arbitrary
yield 1
yield 2
yield 3
yield 4
end
arbitrary { |x| puts x }
Run Code Online (Sandbox Code Playgroud)
我想修改这个方法,这样,如果没有块,它只是将值作为数组返回.所以这个结构也可以运行:
myarray = arbitrary
p a -----> [1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)
这可能在Ruby中吗?
我有一个C#/ .NET应用程序需要在中央存储库中存储可变大小的二进制blob(10KB - 100MB).MogileFS完全满足我的需求(一次写入,高可用性,透明的水平可伸缩性,针对商用硬件进行了优化)但缺少.NET绑定表明还有其他更多的.NET方法.
或者我应该只是写那些绑定?
我正在尝试将Red Gate的SQLBackup Pro软件集成到我用C#编写的内部备份软件中.这样做的自然方式是通过扩展存储过程.问题在于它以我以前从未见过的格式调用:
master..sqlbackup '-SQL "BACKUP DATABASE pubs TO DISK = [C:\Backups\pubs.sqb]"'
Run Code Online (Sandbox Code Playgroud)
通过SSMS运行时,这很好用.我遇到麻烦的地方是尝试从C#(使用.NET 4和Dapper Dot Net)调用它.
我的第一次尝试不起作用,因为它将整个cmd字符串解释为存储过程的名称,并抛出错误"无法找到存储过程''":
var cmd = "master..sqlbackup '-SQL \"BACKUP DATABASE pubs TO DISK = [C:\\Backups\\pubs.sqb]\"'";
connection.Execute(cmd, commandType: CommandType.StoredProcedure, commandTimeout: 0);
Run Code Online (Sandbox Code Playgroud)
我的第二次尝试立即返回并显示(到C#)成功,但实际上没有进行备份(这也很难进行参数化):
var cmd = "master..sqlbackup";
var p = new DynamicParameters();
p.Add("", "'-SQL \"BACKUP DATABASE pubs TO DISK = [C:\\Backups\\pubs.sqb]\"'");
connection.Execute(cmd, p, commandType: CommandType.StoredProcedure, commandTimeout: 0);
Run Code Online (Sandbox Code Playgroud)
我的第三次尝试似乎也成功了,但实际上没有进行备份:
var cmd = "master..sqlbackup '-SQL \"BACKUP DATABASE pubs TO DISK = [C:\\Backups\\pubs.sqb]\"'";
connection.Execute(cmd, commandTimeout: …Run Code Online (Sandbox Code Playgroud) 我有许多类使用SQLAlchemy映射到表(如果重要的话,非声明性地).因为我希望应用程序可以进行单元测试,所以所有SQLAlchemy会话交互都被隔离到一个类中.使用该应用程序是这样的:
m = Model("mysql://localhost/mydb")
s1 = Service("somename")
m.session.add(s1)
s1 is m.get_service("somename") # True
Run Code Online (Sandbox Code Playgroud)
它实际上比那更精简,但在这里和我一起工作.
是否可以跳过session.add()步骤?换句话说,如果我实例化一个映射类,是否有可能自动添加到活动的SQLAlchemy会话(如果有的话)?
我在几个不同的C#应用程序中遇到过这个问题.这些都是我编写的实用程序,使我作为系统管理员的生活更轻松.比如在数据库服务器之间迁移数据.
他们将当前步骤打印到控制台(旧版本通过System.Console.WriteLine(),新版本通过log4net的ConsoleAppender),所以我总是从命令提示符运行它们.这样做时,它们似乎经常以随机间隔暂停,直到我输入几次.我注意到它们已暂停,因为通常需要一两秒的步骤已经在屏幕上显示了很长时间.点击进入后,事情会再次开始正常处理一段时间.
为什么是这样?我该如何解决?
在不触及代码的情况下,将Windows应用程序作为服务运行的最干净,最可靠的方法是什么?
使用案例:NorthScale的64位Windows版memcached作为通用应用程序运行.我想将它粘贴到Windows 2003或2008服务中,这样我就可以通过标准接口启动/停止/重启/等等.
windows windows-services windows-server-2003 windows-server-2008
我正在编写一个应用程序,其中标签是可链接的,并且需要检索整个链接标签链.不允许自我引用.运行以下代码最终会得到一些非常奇怪的结果:
class Tag(object):
def __init__(self, name):
self.name = name
self.links = []
def __repr__(self):
return "<Tag {0}>".format(self.name)
def link(self, tag):
self.links.append(tag)
def tag_chain(tag, known=[]):
chain = []
if tag not in known:
known.append(tag)
print "Known: {0}".format(known)
for link in tag.links:
if link in known:
continue
else:
known.append(link)
chain.append(link)
chain.extend(tag_chain(link, known))
return chain
a = Tag("a")
b = Tag("b")
c = Tag("c")
a.link(b)
b.link(c)
c.link(a)
o = tag_chain(a)
print "Result:", o
print "------------------"
o = tag_chain(a)
print "Result:", o
Run Code Online (Sandbox Code Playgroud)
结果:
Known: …Run Code Online (Sandbox Code Playgroud) 当我打电话时,为什么Visual Studio 2010告诉我''System.Delegate'不包含'EndInvoke'的定义job.Delegate.EndInvoke()?我如何解决它?请注意,它BeginInvoke()很好,并且如果我EndInvoke()立即添加后不会抱怨BeginInvoke()(思想帽子没有达到我想要的效果).
我有一个小JobTracker类用于跟踪备份作业:
public class JobTracker
{
private class Job
{
public Account Account { get; set; }
public IAsyncResult Result { get; set; }
public Delegate Delegate { get; set; }
public bool IsCompleted { get { return result.IsCompleted } }
public string Instance { get { return Account.Instance } }
}
public List<Job> Running = new List<Job>;
public void AddJob(Account a, IAsyncResult result, Delegate del)
{
var j = …Run Code Online (Sandbox Code Playgroud) 在明确指定方法目标时,Ruby是否有最佳实践?
class Foo
def meth1
puts "bar"
end
def meth2
# is this better?
self.meth1
# or this?
meth1
end
end
Run Code Online (Sandbox Code Playgroud) c# ×6
dapper ×3
python ×3
.net ×2
ruby ×2
arrays ×1
begininvoke ×1
closures ×1
command-line ×1
exception ×1
exit-code ×1
file-storage ×1
filehandle ×1
filenames ×1
iterator ×1
methods ×1
mogilefs ×1
perl ×1
recursion ×1
return-value ×1
sql-server ×1
sqlalchemy ×1
sqlexception ×1
timeout ×1
windows ×1
windows-7 ×1