小编Vik*_*ose的帖子

在SQL Server 2008 R2中重命名数据库时出错

我正在使用此查询重命名数据库:

ALTER DATABASE BOSEVIKRAM MODIFY NAME = [BOSEVIKRAM_Deleted]
Run Code Online (Sandbox Code Playgroud)

但它在排除时显示错误:

消息5030,级别16,状态2,行1
无法独占锁定数据库以执行操作.

我的查询有什么问题吗?

sql sql-server sql-server-2008-r2

152
推荐指数
7
解决办法
12万
查看次数

如何在c#.net中将结构转换为Byte数组,但仅在运行时定义结构大小

我有一个像下面这样的结构

[StructLayout(LayoutKind.Sequential)]
public struct MyStructType
{
[MarshalAs(UnmanagedType.U1)]
public byte stx;

public UInt16 cmdId;

public UInt16 status;

public UInt16 pktNo;

[MarshalAs(UnmanagedType.U1)]
public byte contPkt;

[MarshalAs(UnmanagedType.U1)]
public byte dataoffset;

public UInt16 dataLength;

[MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 6)]
public byte[] data;

public UInt16 checkSum;

[MarshalAs(UnmanagedType.U1)]
public byte cr;
}
Run Code Online (Sandbox Code Playgroud)

我试图通过使用下面的代码将此结构转换为字节数组.

byte[] ConvertStructureToByteArray(MyStructType str)
    {
        int size = Marshal.SizeOf(str);
        byte[] arr = new byte[size];

        IntPtr ptr = Marshal.AllocHGlobal(size);
        Marshal.StructureToPtr(str, ptr, true);
        Marshal.Copy(ptr, arr, 0, size);
        Marshal.FreeHGlobal(ptr);
        return arr;
    }
Run Code Online (Sandbox Code Playgroud)

但我得到了以下错误,因为他们不知道的大小

类型'MyStructType'不能作为非托管结构封送; 不能计算有意义的大小或偏移量.

因为这个问题

public UInt16 …
Run Code Online (Sandbox Code Playgroud)

c# arrays byte structure marshalling

5
推荐指数
1
解决办法
453
查看次数

在SQL Server 2008 R2中使用完整的数字创建数据库名称时出错

使用string创建数据库名称,数据库将成功创建.

示例:

if db_id('Database1') is null create database Database1
Run Code Online (Sandbox Code Playgroud)

命令已成功完成.

但是使用完整的数字创建数据库名称,它有问题

示例:

if db_id('1234567890') is null create database 1234567890
Run Code Online (Sandbox Code Playgroud)

消息102,级别15,状态1,行
1'1234567890'附近的语法不正确.

我的查询有什么不对吗?

sql sql-server sql-server-2008

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

无法使用Nhibernate为SQL Server CE创建架构

当我使用此代码使用Nhibernate为SQL Server CE创建架构时:

Fluently.Configure()
            .Database(MsSqlCeConfiguration.Standard
            .ConnectionString(c => c.Is("Data Source=" + file))
            .Dialect<NHibernate.Dialect.MsSqlCeDialect>()
            .Driver<NHibernate.Driver.SqlServerCeDriver>()
            .ShowSql())
            .Mappings(m => m.FluentMappings.AddFromAssemblyOf<NHibernateSessionFactory>())
            .ExposeConfiguration(BuildSchema)
            .BuildSessionFactory();  

private static void BuildSchema(Configuration config)
    {
       // new SchemaExport(config).Drop(false, true);
        //new SchemaExport(config).Create(true, true);

         //If DB File does not exists, create it.
        if (!File.Exists(file))
        {
            Directory.CreateDirectory(Path.GetDirectoryName(databaseFileName));
            SqlCeEngine engine = new SqlCeEngine("Data Source="+ file);
            engine.CreateDatabase();
            // this NHibernate tool takes a configuration (with mapping info in)
            // and exports a database schema from it
            new SchemaExport(config).Execute(false, true, false);
            //FormulasDAO.AddDefaultFormulaCollection();
        }
        else
        {
            new …
Run Code Online (Sandbox Code Playgroud)

c# nhibernate fluent-nhibernate sql-server-ce

3
推荐指数
1
解决办法
1501
查看次数

重命名数据库并在显示数据库中以旧名称创建数据库已存在错误

我正在重命名我的数据库并在show database中创建一个旧名称的数据库已存在错误.

use master 

ALTER DATABASE DATABASE1 
SET SINGLE_USER WITH ROLLBACK IMMEDIATE 

ALTER DATABASE DATABASE1 
MODIFY NAME = [DATABASE1_DELETED] 

ALTER DATABASE DATABASE1_DELETED 
SET MULTI_USER
Run Code Online (Sandbox Code Playgroud)

现在查询正确执行并重命名了数据库,但我再次尝试使用旧名称创建数据库,如下所示:

IF DB_ID('DATABASE1') IS NULL 
   CREATE DATABASE [DATABASE1] 
Run Code Online (Sandbox Code Playgroud)

现在它显示一个错误:

消息5170,级别16,状态1,行1
无法创建文件'C:\ Program Files\Microsoft SQL Server\MSSQL10_50.EASYDIRECT\MSSQL\DATA\DATABASE1.mdf',因为它已经存在.更改文件路径或文件名,然后重试该操作.
Msg 1802,Level 16,State 4,Line 1
CREATE DATABASE失败.无法创建列出的某些文件名.检查相关错误.

如何使用旧名称创建数据库?

c# sql sql-server-2008-r2

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