我正在运行安装了SSDT(SQL Server数据工具)的SQL Server 2012和VS 2010.我的dev DB使用存储过程,函数,CLR对象等.它有一个大约500GB的prod数据的快照.
我创建了SQL Server数据库项目,然后导入了数据库.这在模式名称下创建了所有表,视图,过程和函数文件.好东西 - 现在我可以像其他VS项目一样进行版本控制,创建部署等.到目前为止,这么好.
但是,我对在SQL Server数据库项目下更改/添加procs/tables的开发过程感到困惑.看来我所做的任何更改都应用于某些LocalDb/Projects数据库,而不是我的dev数据库.
我想在LocalDb中编写所有对象,然后通过Publish构建并部署到我的dev数据库吗?我担心dev DB中的现有表,因为如果发布过程丢失并重新创建表,我将丢失我的prod数据快照.
SQL Server数据库项目中要遵循的正确开发过程是什么?
我有一个约5亿件物品的清单.如果我序列化单个项目而不是列表,我可以将它序列化为带有protobuf-net文件的文件 - 我无法将项目收集到价格列表中,然后序列化,因为我的内存不足.所以,我必须一次序列化一条记录:
using (var input = File.OpenText("..."))
using (var output = new FileStream("...", FileMode.Create, FileAccess.Write))
{
string line = "";
while ((line = input.ReadLine()) != null)
{
Price price = new Price();
(code that parses input into a Price record)
Serializer.Serialize(output, price);
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是关于反序列化的部分.似乎Deserialize方法不会将流的位置移动到下一条记录.我试过了:
using (var input = new FileStream("...", FileMode.Open, FileAccess.Read))
{
Price price = null;
while ((price = Serializer.Deserialize<Price>(input)) != null)
{
}
}
Run Code Online (Sandbox Code Playgroud)
我看到一个真实的价格记录,然后其余的是空记录 - 我得到Price对象,但所有字段都被初始化为默认值.
如何正确反序列化包含未序列化为列表的对象列表的流?
我有一个ASP.NET站点,它执行CreateInstanceAndUnwrap:
var setup = new AppDomainSetup
{
ShadowCopyFiles = "true",
ShadowCopyDirectories = "true",
ApplicationBase = textPipe["host"] == "web" ? Path.GetDirectoryName(new Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath) : Environment.CurrentDirectory,
ConfigurationFile = $"UnitTests/{testProject}/app.config"
};
var domain = AppDomain.CreateDomain("UnitTestDomain", null, setup);
var type = typeof(TestProxy);
var instance = (TestProxy)domain.CreateInstanceAndUnwrap(
type.Assembly.FullName,
type.FullName);
Run Code Online (Sandbox Code Playgroud)
一切正常,但是在我的开发工作站上的IISExpress下运行此代码后,我再也无法重新编译DLL了 - 我得到的错误是"无法复制文件....因为它正被另一个进程使用." 我必须在重新编译之前停止IISExpress.如果在每次部署之前需要停止AppPool,这肯定会成为生产中的一个更大问题.
不确定为什么文件被锁定?我正在使用ShadowCopyFiles和ShadowCopyDirectories,但这似乎没有帮助.
我该怎么做才能避免锁定文件?谢谢.
我使用的是C#,.NET 4.0,64位.我需要在内存中存储5亿个用于计算的"数据点".我需要决定是将它们创建为struct还是class对象.结构似乎更快.
堆栈是否有内存限制?如果是这样,如何调整.
将大量数据存储在堆栈中是否会影响系统的整体性能?
(顺便说一句,我知道.NET中的单个对象大小限制,因此正在解决 - 数据将存储在多个集合中).
我想创建一个总是由唯一键访问的大表(大约450亿行).
在DB之外,保存它的最佳结构是Dictionary或HashSet,但当然由于数据的大小,不可能在数据库之外执行此操作.
SQL Server是否提供针对键值访问进行了优化的结构?我知道群集密钥非常快,但它仍然是一个索引,因此会有一些额外的磁盘读取与遍历索引页面相关联.我想从SQL Server获得的是一个"本机"结构,它将数据存储为键值对,然后可以根据键访问值.
换句话说,我的问题是如何在SQL Server中存储450亿行并有效地访问它们而不具有索引,群集或非群集,因为读取索引非叶页可能会导致大量IO,并且因为每个值都可以通过唯一键访问,应该可以具有一种结构,其中键的散列解析为值的物理位置.要获得1个值,我们需要进行1次读取(除非存在哈希冲突).
(Oracle中的等价物是Hash Cluster)
谢谢你的帮助.
我在执行一个A / B /查看场景中,这意味着该视图指向表A中,而表B中被更新,则切换发生的同时表A被加载的观点表B。
每天进行一次切换。有数百万行要更新,成千上万的用户正在查看该视图。我正在使用SQL Server 2012。
我的问题是:
我使用yepnope.js作为资源加载.我想只在加载了该模块的所有依赖项时才在我的JS模块中执行代码.我不想加载已经加载的JS依赖项.
假设,我有依赖D1.js和D2.js. 我试过了
yepnope({
load: ['D1.js', 'D2.js],
complete: function() {
//execute my code here
}
});
Run Code Online (Sandbox Code Playgroud)
这是有效的,但是,每次都会加载资源,即使它们之前已经加载过.
如果我做那样的多个测试:
yepnope([{
test: $().d1,
nope: 'D1.js'
},
{
test: $().d2,
nope: 'D2.js'
}]);
Run Code Online (Sandbox Code Playgroud)
目前尚不清楚在哪里放置整体已完成的功能 - 在所有资源加载后运行的功能.
是否可以使用yepnope执行此操作,还是需要使用其他组件?
谢谢.
我有一个C#代码片段,如下所示:
[OracleCustomTypeMapping(Constants.DBSchema + ".TAB_VARCHAR2_250")]
public class StringTableFactory : TableFactoryTemplate<StringTable>
{
public override System.Array CreateStatusArray(int length)
{
return new OracleUdtStatus[length];
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法更改属性声明,所以从web.config中读取Constants.DBSchema而不是将其硬编码为代码中的常量?如果我把ConfigurationManager.appSettings放在属性声明中,我得到"一个属性参数必须是一个常量表达式..."错误.
谢谢.
我需要转换为内存流的JSON 任意内容.这是我想要做的一个简单示例:
class Program
{
class TestClass { public int Test1;}
static void Main(string[] args)
{
var ms = new MemoryStream();
var writer = new StreamWriter(ms);
writer.Write(new TestClass());
writer.Flush();
ms.Position = 0;
var json = JsonConvert.SerializeObject(/*???*/, Formatting.Indented);
Console.Write(json);
Console.Read();
}
}
Run Code Online (Sandbox Code Playgroud)
不知道要传递给SerializeObject方法的内容.如果我传递MemoryStream(变量ms),我会收到一个错误:
Newtonsoft.Json.dll中发生未处理的"Newtonsoft.Json.JsonSerializationException"类型异常
附加信息:从'System.IO.MemoryStream'上的'ReadTimeout'获取值时出错.
是否可以序列化流的任意内容?
谢谢