Как я создаю и запрашиваю связанные серверы баз данных в SQL Server?

Я не уверен насчет C #, но в TypeScript вы заявляете, что T extends MyClass, что означает, что T является подтипом в MyClass, а не , идентичным . 1129] MyClass. Таким образом, любое значение типа T может быть присвоено переменной типа MyClass, но не наоборот.

Определение типа из Array.indexOf(y) предполагает, что y можно назначить на X, а не наоборот. Поэтому ошибочно вызывать Array.indexOf() для параметра типа MyClass. Одним из способов решения этой проблемы является объявление childList типа Array> вместо Array:

  childList!: MyClass[];

Но, насколько я знаю, это проявится как проблема где-то еще, потому что при В какой-то момент вы захотите предположить, что T идентичен MyClass, и это просто не тот случай. Вы всегда можете исправить положение с помощью утверждений типа , но я думаю, что вам может потребоваться совершенно другое решение: полиморфное this .

Вместо того, чтобы пытаться представлять круговой / рекурсивный тип, такой как Foo>, и гоняться за собственным хвостом, используйте тип this, чтобы представить «тип текущего класса». Ваш MyClass становится:

export abstract class MyClass {

  childList!: this[];

  foo() {
    const index = this.childList.indexOf(this); // okay
  }
}

И подклассы более или менее работают так, как вы ожидаете:

export class MyConcreteClass extends MyClass {
  bar() {
    this.childList.indexOf(this); // still works
  }
}

И экземпляры обналичивают this в фактический тип экземпляра:

const y = new MyConcreteClass();
y.childList; // type MyConcreteClass[];

Надежда, которая помогает; удачи!

13
задан Kalid 9 October 2008 в 22:21
поделиться

3 ответа

Необходимо использовать sp_linkedserver для создания связанного сервера.

sp_addlinkedserver [ @server= ] 'server' [ , [ @srvproduct= ] 'product_name' ] 
 [ , [ @provider= ] 'provider_name' ]
 [ , [ @datasrc= ] 'data_source' ] 
 [ , [ @location= ] 'location' ] 
 [ , [ @provstr= ] 'provider_string' ] 
 [ , [ @catalog= ] 'catalog' ] 
[еще 113] информация, доступная на MSDN.

14
ответ дан 1 December 2019 в 17:36
поделиться

Решение я нашел:

1) Выполнение сохраненный proc

exec sp_addlinkedserver    @server='10.0.0.51'

2), Проверяют, что серверы были связаны (перечисляет связанные серверы)

exec sp_linkedservers

3) Выполнение запрос с помощью формата

 [10.0.0.51].DatabaseName.dbo.TableName
20
ответ дан 1 December 2019 в 17:36
поделиться

Как упомянуто, можно использовать sp_addlinkedserver. Однако можно также сделать это через Руководителя предприятия (2000) или Studio управления SQL Server (2005). Под узлом "безопасности" существует узел "Связанных серверов", который можно использовать, чтобы добавить и настроить Связанные серверы. Можно указать настройки безопасности, олицетворение, и т.д.

Посмотрите их для SQL Server 2000:

Связанные серверы Конфигурирования

безопасность Установления Для Связанных серверов

Конфигурирование Поставщики OLEDB для Распределенных запросов

Видят их для SQL Server 2005:

Соединение Серверов

безопасность для Связанных серверов

Связанные серверы Конфигурирования для Делегации

Конфигурирование Поставщики OLEDB для Распределенных запросов

5
ответ дан 1 December 2019 в 17:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: