小编use*_*169的帖子

如何使用SQL Server数据库项目

我正在运行安装了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数据库项目中要遵循的正确开发过程是什么?

sql-server sql-server-data-tools

12
推荐指数
2
解决办法
6700
查看次数

如何使用protobuf-net序列化/反序列化大型项目列表

我有一个约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对象,但所有字段都被初始化为默认值.

如何正确反序列化包含未序列化为列表的对象列表的流?

serialization protobuf-net

10
推荐指数
1
解决办法
5569
查看次数

CreateInstanceAndUnwrap在IIEXpress下锁定了dll

我有一个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,但这似乎没有帮助.

我该怎么做才能避免锁定文件?谢谢.

.net asp.net

10
推荐指数
1
解决办法
82
查看次数

如何用C#编程Intel Xeon Phi?

我是一名具有一些C++经验的C#程序员,所有这些都在Windows上.

有了这个技能,有没有为英特尔至强Phi处理器开发的选择?

找到此链接,但不确定这是否是最佳/唯一的方式.

谢谢你的建议.

c# multithreading xeon-phi

8
推荐指数
1
解决办法
2105
查看次数

.NET堆栈内存限制

我使用的是C#,.NET 4.0,64位.我需要在内存中存储5亿个用于计算的"数据点".我需要决定是将它们创建为struct还是class对象.结构似乎更快.

堆栈是否有内存限制?如果是这样,如何调整.

将大量数据存储在堆栈中是否会影响系统的整体性能?

(顺便说一句,我知道.NET中的单个对象大小限制,因此正在解决 - 数据将存储在多个集合中).

.net memory 64-bit stack limit

7
推荐指数
1
解决办法
900
查看次数

Hashset在SQL Server中等效

我想创建一个总是由唯一键访问的大表(大约450亿行).

在DB之外,保存它的最佳结构是Dictionary或HashSet,但当然由于数据的大小,不可能在数据库之外执行此操作.

SQL Server是否提供针对键值访问进行了优化的结构?我知道群集密钥非常快,但它仍然是一个索引,因此会有一些额外的磁盘读取与遍历索引页面相关联.我想从SQL Server获得的是一个"本机"结构,它将数据存储为键值对,然后可以根据键访问值.

换句话说,我的问题是如何在SQL Server中存储450亿行并有效地访问它们而不具有索引,群集或非群集,因为读取索引非叶页可能会导致大量IO,并且因为每个值都可以通过唯一键访问,应该可以具有一种结构,其中键的散列解析为值的物理位置.要获得1个值,我们需要进行1次读取(除非存在哈希冲突).

(Oracle中的等价物是Hash Cluster)

谢谢你的帮助.

sql sql-server hash cluster-computing hashset

7
推荐指数
1
解决办法
1651
查看次数

从表到表批量插入

我在执行一个A / B /查看场景中,这意味着该视图指向表A中,而表B中被更新,则切换发生的同时表A被加载的观点表B。

每天进行一次切换。有数百万行要更新,成千上万的用户正在查看该视图。我正在使用SQL Server 2012。

我的问题是:

  • 如何以最快的方式将数据从另一个表插入到表中?(在存储的过程中)
  • 有什么方法可以使用BULK INSERT吗?还是使用常规插入/选择最快的方式?

sql sql-server bulkinsert insert

6
推荐指数
1
解决办法
4万
查看次数

使用yepnope的多个条件

我使用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执行此操作,还是需要使用其他组件?

谢谢.

requirejs yepnope labjs

6
推荐指数
1
解决办法
1182
查看次数

使用属性中的配置设置

我有一个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放在属性声明中,我得到"一个属性参数必须是一个常量表达式..."错误.

谢谢.

.net c#

6
推荐指数
1
解决办法
4211
查看次数

Newtonsoft Json.net - 如何序列化流的内容?

我需要转换为内存流的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'获取值时出错.

是否可以序列化流的任意内容?

谢谢

c# json.net

6
推荐指数
1
解决办法
2万
查看次数