Ab NAV2016 gibt es die Möglichkeit externe Tabellen in NAV / Business Central einzubinden. So können Daten direkt in externe Datenbanken geschrieben und von externen Datenbanken gelesen werden.
Vorbereitend muss auf dem externen SQL Server ein Datenbank Benutzer mit gewünschten Lese/Schreibrechten auf die Datenbank erstellt werden.
![](https://nav-d365bc-sql-blog.karler.de/wp-content/uploads/2020/11/image-4.png)
Die in NAV benötigte Tabelle wird dann als Cside/AL Objekt angelegt. Alle benötigten Felder werden in die NAV/BC Tabelle übernommen:
Hier auf die richtigen Feldtypen gemäss Referenz achten
https://docs.microsoft.com/en-us/dynamics-nav/identifiers–data-types–and-data-formats#SQLDataType
Es müssen nicht alle Tabellenfelder übernommen werden. So ist es auch möglich Felder mit NULL werden in SQL zu übergehen. Dies ist sonst aus NAV heraus nicht möglich.
![](https://nav-d365bc-sql-blog.karler.de/wp-content/uploads/2020/11/image-5.png)
In den Tabelleneigenschaften muss noch TableType auf „ExternalSQL“ , ExternalSchema auf „dbo“ gesetzt werden und als ExternalName der Name der Zieltabelle angegeben werden.
![](https://nav-d365bc-sql-blog.karler.de/wp-content/uploads/2020/11/image-6.png)
Anschliessen muss die externe Tabellenanbindung in NAV/BC registriert werden. Dies kann via NAV Command Shell:
New-NAVTableConnection -ServerInstance <NAVServerInstance> -ConnectionType ExternalSQL -ConnectionId ‚<TableConnectionName>‘ -DatabaseServer ‚<DatabaseServer>\<DatabaseInstance>‘ -DatabaseName ‚<ExternalDatabaseName>‘
oder via Code bewerkstelligt werden.
Im aktuellen Beispiel wird eine List Page mit den gewünschten Feldern und Tabelleneinbindung im OnInit Trigger erstellt:
Es wird eine Listpage mit den gewünschten Tabellenfeldern erstellt:
![](https://nav-d365bc-sql-blog.karler.de/wp-content/uploads/2020/11/image-7.png)
Im OnInit Trigger wird die externe Datenbank eingebunden:
Es muss immer geprüft werden, ob schon eine Verbindung vorhanden ist und diese dann durch die aktuelle Verbindung ersetzen.
IF HASTABLECONNECTION(TABLECONNECTIONTYPE::ExternalSQL, ‚ExtSQLSINA_Connector‘) THEN
UNREGISTERTABLECONNECTION(TABLECONNECTIONTYPE::ExternalSQL,’ExtSQLSINA_Connector‘);
REGISTERTABLECONNECTION(TABLECONNECTIONTYPE::ExternalSQL, ‚ExtSQLSINA_Connector‘, ‚Data Source=SRNAME\SRInstance;Initial Catalog=EMB_SINA;User ID=user;Password=xxx‘);
SETDEFAULTTABLECONNECTION(TABLECONNECTIONTYPE::ExternalSQL,’ExtSQLSINA_Connector‘);
Anschliessend kann die externe Tabelle direkt in NAV/BC aufgerufen und editiert werden.
![](https://nav-d365bc-sql-blog.karler.de/wp-content/uploads/2020/11/image-8.png)