小编cpr*_*leg的帖子

从另一台计算机上的.bak文件还原数据库

我没有做太多的SQL,我仍然很新,所以请原谅可能是一个基本问题.

我被要求研究创建一个SQL作业来备份我们的数据库,将.baks存储在另一台机器上,然后将它们恢复到第二台服务器.我一直在做一些研究和SSMS玩,并通过设置共享和运行备份作业到共享位置将数据库备份到我的个人计算机.我现在正在尝试通过恢复.bak文件创建一个新数据库(在我备份的同一台服务器上)(但是给数据库我正在尝试创建一个新名称而不是什么)但是我无法指定从共享中恢复它,就像我在备份时所做的那样/我无法找到如何指定其他网络位置,而我只是在尝试查找文件时浏览服务器的C驱动器.

现在,我只是使用内置向导来尝试实现这一点(打开SSMS - >连接到服务器 - >右键单击DataBases - > Restore DataBases,然后选择From Device并浏览找到该文​​件).

这不是最后的过程,只是我试图掌握这是如何工作的.正如我所说,我的想法是最终有一个预定的工作,将数据库从server1备份到我的个人计算机上的.bak,然后将其恢复到server2(不同网络,不同城市)上的数据库,可能,使用一系列SQL命令而不是每次都使用向导(有一些DB最终需要备份).

我为这个可能非常抽象和复杂的问题道歉 - 基本上,我需要知道的是我/如何从另一台机器上的.bak恢复SSMS中的数据库?非常感谢

sql database sql-server database-restore

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

C++ 联合成员访问和未定义行为

我目前正在从事一个项目,其中提供了以下结构。我的工作是 C++,但该项目同时使用 C 和 C++。C 和 C++ 都使用相同的结构定义。

typedef struct PacketHeader {
    //Byte 0
    uint8_t  bRes                           :4;
    uint8_t  bEmpty                         :1;
    uint8_t  bWait                          :1;
    uint8_t  bErr                           :1;
    uint8_t  bEnable                        :1;
    //Byte 1
    uint8_t  bInst                          :4;
    uint8_t  bCount                         :3;
    uint8_t  bRres                          :1;
    //Bytes 2, 3
    union {
        uint16_t wId;    /* Needed for Endian swapping */
        struct{
            uint16_t wMake                  :4;
            uint16_t wMod                   :12;
        };
    };
} PacketHeader;
Run Code Online (Sandbox Code Playgroud)

根据结构实例的使用方式,结构所需的字节序可以是大端或小端。由于结构的前两个字节都是单个字节,因此当字节序更改时不需要更改这些字节。字节 2 和 3 存储为单个uint16_t,是我们需要交换以实现所需字节顺序的唯一字节。为了实现字节序交换,我们一直在执行以下操作:

//Returns a constructed instance of PacketHeader with relevant fields …
Run Code Online (Sandbox Code Playgroud)

c++ undefined-behavior unions language-lawyer

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

shm_open 上的 C++ Boost 库未定义参考:命令行中缺少 DSO

我正在编写一个应用程序,它将在 DDS 系统中扮演订阅者的角色。该订阅者将在收到数据后将值写入共享内存位置,以便其他 GUI 应用程序可以读取这些值。

我已经编写了一个在 Windows 上编译和运行 A-OK 的应用程序版本,但我现在面临着创建一个在 Ubuntu 上运行的版本。作为 Windows 本机,这对我来说很麻烦。

为了创建 Ubuntu 版本,我已将我的代码库移植到 Ubuntu VM,现在正尝试在那里编译它,这正是我遇到问题的地方。

在大多数情况下,一切都可以正常编译,并且该过程与 Windows 上的过程非常相似。不幸的是,链接我所有生成的 .o 文件的最后一条语句失败了。一些描述如下:

我正在使用 boost 进程间库来编写一个头文件,该文件将提供共享内存读/写操作。实现此目的的 .cpp 如下:MemWriterH.cpp

#define BOOST_DATE_TIME_NO_LIB
#define CPP

#include <boost/interprocess/shared_memory_object.hpp>
#include <boost/interprocess/mapped_region.hpp>
#include <stdio.h>
#include <MemWriterH.h>

using namespace boost::interprocess;

extern "C" int writeToSharedMemory(char *data)
{
    //Remove shared memory on construction and destruction
    struct shm_remove
    {
        shm_remove()
        {
            //shared_memory_object::remove("MySharedMemory");
        }
        ~shm_remove()
        {
            //shared_memory_object::remove("MySharedMemory");
        }
    }remover;

    //Create a shared memory object.
    shared_memory_object shm(open_or_create, "MySharedMemory", read_write);
    //Set …
Run Code Online (Sandbox Code Playgroud)

c++ linux ubuntu gcc boost

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

尝试分配给 C#“foreach 迭代变量”会生成编译时错误。在 Linq [IEnumerable].ForEach(...) 中这样做则不会。为什么?

今天,当我尝试使类变得更整洁并删除用于初始化字符串数组的 for 循环时,我注意到了我认为 C# 和 Linq 中的奇怪行为。

我原来的代码:

    for(int i = 0; i < tagCount; i++)
    {
        myObj.tags[i] = string.Empty;
    }
Run Code Online (Sandbox Code Playgroud)

众所周知,不能为 C# foreach 循环中的迭代变量赋值。例如,以下代码会生成编译时错误(其中 myObj 是一个对象,其中包含名为“tags”的字符串数组):

    foreach(string s in myObj.tags)
    {
        s = string.Empty;
    }

    Gives: "Cannot assign to 's' because it is a 'foreach iteration variable'"
Run Code Online (Sandbox Code Playgroud)

但执行以下操作可以正确编译:

    myObj.tags.ToList().ForEach(s => s = string.Empty);
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么这个语法编译没有任何问题?


注意:奇怪的行为 - 可能是错误?- 以下

作为后续,我认为确实值得注意的是,虽然 Linq 方法编译,但在运行时,s=string.Empty看不到命令​​的效果,也不会生成运行时错误。string.Empty可以替换为任何值,并且检查数组中的任何索引都myObj.tags将显示空值。突破并步入...ForEach(s=>s=string.Empty)显示该行正在按预期执行,但 s 的值没有变化。

这让我觉得很奇怪,主要是因为也没有生成错误——它似乎什么也没做。这是设计使然吗?疏忽?

感谢大家的意见。


(PS,我知道 ToList().ForEach() 的性能影响。我只是想看看是否可以删除该 for 循环。我现在对编译和运行时表现出的行为背后的原因更感兴趣)。

c# linq foreach runtime

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