Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 将新rails应用程序与现有外部MS SQL Server数据库集成_Ruby On Rails_Sql Server_Database - Fatal编程技术网

Ruby on rails 将新rails应用程序与现有外部MS SQL Server数据库集成

Ruby on rails 将新rails应用程序与现有外部MS SQL Server数据库集成,ruby-on-rails,sql-server,database,Ruby On Rails,Sql Server,Database,我需要创建一个新的rails应用程序,该应用程序将使用现有的外部Microsoft SQL server数据库作为其主数据库。此数据库正在我需要连接的外部服务器上运行。在我工作的地方有一个单独的DB管理员部分,所以我不确定我需要执行哪些步骤。我认为最简单的部分是连接到服务器并将应用程序设置为与该数据库一起工作。但在那之后,我感到困惑 我应该创建数据库转储和迁移吗 我应该添加模型来表示现有的数据库结构吗 如果我需要在数据库中创建新的模型和表 我应该从rails生成器生成模型并在db上运行迁移,还是

我需要创建一个新的rails应用程序,该应用程序将使用现有的外部Microsoft SQL server数据库作为其主数据库。此数据库正在我需要连接的外部服务器上运行。在我工作的地方有一个单独的DB管理员部分,所以我不确定我需要执行哪些步骤。我认为最简单的部分是连接到服务器并将应用程序设置为与该数据库一起工作。但在那之后,我感到困惑

我应该创建数据库转储和迁移吗

我应该添加模型来表示现有的数据库结构吗

如果我需要在数据库中创建新的模型和表

我应该从rails生成器生成模型并在db上运行迁移,还是联系db管理员创建表,然后在应用程序中手动指定模型轨道方式

我发现了另一种集成多个数据库数据的好方法。。。您可以定义一个模型并指定它位于哪个数据库中(这样数据库连接就永远不会关闭)。。。这绝对是正轨,应该遵循

这是一个不错的图坦卡蒙:

TL;DR

  • 在database.yml中定义辅助数据库
  • 定义模型并指定其数据库和表名

    Class ExternalDatabaseModel < ActiveRecord::Base
      establish_connection(:secondary_db)
      self.table_name = "the_table"
      self.primary_key = 'someWeirdIDColumn'
    end
    
    Class ExternalDatabaseModel
  • 然后将其用作任何其他rails模型,指定关系等:)


    希望这对某人有帮助

    我建议您看看tiny tds gem:。它的真正用途是配置和使用。。。您可以使用它连接外部sql server db并进行所需的查询。不知道您使用的是哪种类型的系统,但如果您不断检索数据,发出外部请求可能会使您的系统变慢。根据应用程序,可以考虑同步数据,使本地数据库冗余。希望它能帮助你,祝你好运


    编辑:关于模型部分:如果要在每次需要时从该sql server检索数据,则不需要将其存储在本地。但是,如果要进行冗余,则应使用所需的属性创建模型,而不是从服务器检索时,正常保存模型,只需将值赋给模型并调用
    save方法

    我建议您看看tiny tds gem:。它的真正用途是配置和使用。。。您可以使用它连接外部sql server db并进行所需的查询。不知道您使用的是哪种类型的系统,但如果您不断检索数据,发出外部请求可能会使您的系统变慢。根据应用程序,可以考虑同步数据,使本地数据库冗余。希望它能帮助你,祝你好运


    编辑:关于模型部分:如果要在每次需要时从该sql server检索数据,则不需要将其存储在本地。但是,如果要进行冗余,则应使用所需的属性创建模型,而不是从服务器检索时,正常保存模型,只需将值赋给模型并调用
    save方法

    谢谢你的回答!我一直在读关于tiny_tds和sql server适配器gem的文章,但我感到困惑,因为我认为这个数据库将是主要的,也是唯一的数据库,我的意思是,我认为不会有任何其他数据库来存储数据,所以我不知道如何处理它。(不会有太多的速度问题,因为它的所有内部网)。这是一件事还是我想得太多了?明白了。那么,在这种情况下,您是只执行查询来检索数据,还是也要修改数据?总之,基本上,您需要sql server上的一个用户具有执行所需操作(读和/或写)的权限,而不是在tiny_tds gem中配置该用户,以及sql server主机的地址和端口。这样,每当您在应用程序中需要时,都可以对服务器执行sql查询调用,以检索或保存数据。希望这能说清楚谢谢!我喜欢这种方法,因此除了外部查询外,应用程序还将拥有自己的数据库,用自己的映射(模型)存储与应用程序相关的数据。祝你有美好的一天!谢谢你的回答!我一直在读关于tiny_tds和sql server适配器gem的文章,但我感到困惑,因为我认为这个数据库将是主要的,也是唯一的数据库,我的意思是,我认为不会有任何其他数据库来存储数据,所以我不知道如何处理它。(不会有太多的速度问题,因为它的所有内部网)。这是一件事还是我想得太多了?明白了。那么,在这种情况下,您是只执行查询来检索数据,还是也要修改数据?总之,基本上,您需要sql server上的一个用户具有执行所需操作(读和/或写)的权限,而不是在tiny_tds gem中配置该用户,以及sql server主机的地址和端口。这样,每当您在应用程序中需要时,都可以对服务器执行sql查询调用,以检索或保存数据。希望这能说清楚谢谢!我喜欢这种方法,因此除了外部查询外,应用程序还将拥有自己的数据库,用自己的映射(模型)存储与应用程序相关的数据。祝你有美好的一天!