INSERT in other table with Azure SQL Server - sql-server

I'm Tried input INSERT INTO with other table, but I've error log:
Mensagem 40515, Nível 15, Estado 1, Linha 18
Reference to database and/or server name in 'deletadosYY.dbo.deletadosCadastroTeste' is not supported in this version of SQL Server
I have any possibility in do this, because I use azure server and I need change informations between tables.
My SQL code:
INSERT INTO deletadosYY.dbo.deletadosCadastroTeste VALUES (19,'Michael', 'Street Los Angelos', 25, '1998-12-25')

3+ part naming isn't supported in Azure SQL Databases; they are contained databases, meaning that the reference to the database isn't permitted.
Omit the database name and connect to the correct database in your connection string (or switch the database context if you're in SSMS/ADS/etc). Then your statement would simply be:
INSERT INTO dbo.deletadosCadastroTeste ({Your Column List goes here})
VALUES (19,'Michael', 'Street Los Angelos', 25, '1998-12-25');

Related

I cannot use all the Microsoft SQL Server sequences because of the error "Invalid object name <sequence>."

I cannot use all the Microsoft SQL Server sequences because of the error Invalid object name <sequence>.
The problem affects Microsoft SQL Server 2012 (but also Microsoft SQL Server 2018).
I have created a user named WebClient1 in SQL Server Management Studio (Microsoft SQL Server 2012).
I cannot use all the Microsoft SQL Server sequences because of the error Invalid object name <sequence>.
I have created the following sequence:
USE [AlphaShop]
GO
USE [AlphaShop]
GO
/****** Object: Sequence [dbo].[Test_Seq] Script Date: 09/07/2019 10:56:28 ******/
CREATE SEQUENCE [dbo].[Test_Seq]
AS [bigint]
START WITH 500
INCREMENT BY 50
MINVALUE 500
MAXVALUE 9223372036854775807
CACHE
GO
The SQL query is the following:
select
next_val as id_val
from
Test_Seq with (updlock,
rowlock)
The error is:
Messaggio 208, livello 16, stato 3, riga 1
Il nome di oggetto 'Test_Seq' non è valido.
The translation might be the following:
Message 208, level 16, state 3, row 1
Invalid object name 'Test_Seq'.
In the object explorer, I can see the sequence "dbo.Test_Seq".
The name of the database is AlphaShop.
In the available databases listbox, I have selected the correct database, AlphaShop.
The authentication type of the user is "Authentication of SQL Server".
The user has the role "public".
Please help.
Many thanks in advance.
I tried to execute the following SQL command, but it doesn't solve the problem:
ALTER LOGIN WebClient1 WITH DEFAULT_DATABASE = [AlphaShop];
select
next_val as id_val
from
Test_Seq with (updlock,
rowlock)
The expected results consist of the next value of the sequence.
It's not FROM it's FOR. NEXT VALUE doesn't return a dataset (it's not a table-value function) it returns a scalar value, so you reference in it the SELECT, not the FROM:
SELECT NEXT VALUE FOR dbo.Test_Seq AS id_val;
db<>fiddle

[Microsoft][ODBC SQL Server Driver][SQL Server]Violation of PRIMARY KEY constraint

I have an inventory database to track some equipment which I sometimes loan out. I have a Device table, and also a DeviceHistory table. There are two forms which I use to update the Device record, and updates are also recorded in the DeviceHistory table. Both forms call the same update function. I am temporarily writing out the sql to try to locate the differences. When I use formA it results in:
insert into QADeviceHistory (DeviceID, Timestamp, StatusID, AuthorID, AssignedToID, History)
values ( 264, '11/15/2018 9:31:10 AM', 'AVAIL', 'rongray', '', '');
and everything works just fine. However, when I use formB it results in:
insert into QADeviceHistory (DeviceID, Timestamp, StatusID, AuthorID, AssignedToID, History)
values ( 264, '11/15/2018 9:31:45 AM', 'AVAIL', 'rongray', '', '');
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC SQL Server Driver][SQL Server]Violation of PRIMARY
KEY constraint 'QADeviceHistory_pk'. Cannot insert duplicate key in
object 'dbo.QADeviceHistory'. /py2/DeviceRecord.asp, line 1393
The primary key for DeviceHistory is DeviceID and Timestamp, and the values I am attempting to enter really are unique. Oddly enough, the DeviceHistory record DOES get written to the table, so I really don't understand why I am getting the error when using formB but not getting the error when using formA. I am tempted to just add an on resume next and ignore it but would at least like to understand what's happening.
(Also, this is not new code... it's been around for a few years. The only recent change is that I had to migrate the database from a Win 2008 server to a Win 2016 server, and both servers are using MS SQL Server 2008.)

Generate schema name on column domains

I have a schema named "Core" and this schema has several domains (Id, Name, ...)
My DBMS is Microsoft SQL Server 2014.
This is the definition for "Name" domain:
When I generate Sql the column tables haven't the domain schema:
If I run the sql as PowerDesigner generates, I get an error telling me that not found "Id": Msg 2715, Level 16, State 6, Line 18 Column, parameter, or variable #1: Cannot find data type Id
When I manually write the schema before domain its works. This way:
create table Security.Table1 (
Id Core.Id not null,
Nombre Core.Name not null
)
How to do to force generate sql with domains schema name?

How do I convert an Oracle TIMESTAMP data type to SQL Server DATETIME2 data type while connected via Link Server.?

I have tried some examples but so far not working.
I have a Link Server (SQL Server 2014) to an Oracle 12C Database.
The table contain a datatype TIMESTAMP with data like this:
22-MAR-15 04.18.24.144789000 PM
When attempting to query this table in SQL Server 2014 via link server I get the following error using this code:
SELECT CAST(OracleTimeStampColumn AS DATETIME2(7)) FROM linkServerTable
Error:
Msg 7354, Level 16, State 1, Line 8
The OLE DB provider "OraOLEDB.Oracle" for linked server "MyLinkServer" supplied invalid metadata for column "MyDateColumn". The data type is not supported.
While the error is self explanatory, I am not certain how to resolve this.
I need to convert the timestamp to datetime2. Is this possible?
You can work around this problem by using OPENQUERY. For me, connecting to Oracle 12 from SQL 2008 over a linked server, this query fails:
SELECT TOP 10 TimestampField
FROM ORACLE..Schema.TableName
...with this error:
The OLE DB provider "OraOLEDB.Oracle" for linked server "ORACLE" supplied invalid metadata for column "TimestampField". The data type is not supported.
This occurs even if I do not include the offending column (which is of type TIMESTAMP(6). Explicitly casting it to DATETIME does not help either.
However, this works:
SELECT * FROM OPENQUERY(ORACLE, 'SELECT "TimestampField" FROM SchemaName.TableName WHERE ROWNUM <= 10')
...and the data returned flows nicely into a DATETIME2() field.
One way to solve the problem is to create a view in oracle server and convert the OracleTimeStampColumn compatible with sql server's datetime2datatype. You can change the time format to 24 hours format in oracle server's view and mark the field as varchar. Then you can convert the varchar2 column to datetime2 when selecting the column in SQL Server.
In Oracle Server
Create or Replace View VW_YourTableName As
select to_char(OracleTimeStampColumn , 'DD/MM/YYYY HH24:MI:SS.FF') OracleTimeStampColumn from YourTableName
In SQL Server
SELECT CAST(OracleTimeStampColumn AS DATETIME2(7)) FROM **linkServerVIEW**

Accessing Active Directory Role Membership through LDAP using SQL Server 2005

I would like to get a list of Active Directory users along with the security groups they are members of using SQL Server 2005 linked servers. I have the query working to retrieve records but I'm not sure how to access the memberOf attribute (it is a multi-value LDAP attribute).
I have this temporary to store the information:
DROP TABLE #ADUSERGROUPS
CREATE TABLE #ADUSERGROUPS
(
sAMAccountName varchar(30),
UserGroup varchar(50)
)
Each group/user association should be one row.
This is my SELECT statement:
SELECT sAMAccountName,memberOf
FROM OpenQuery(ADSI, '<LDAP://hqdc04/DC=nt,DC=avs>;
(&(objectClass=User)(sAMAccountName=9695)(sn=*)(mail=*)(userAccountControl=512));
sAMAccountName,memberOf;subtree')
I get this error msg:
OLE DB error trace [OLE/DB Provider 'ADSDSOObject' IRowset::GetData returned 0x40eda: Data status returned from the provider: [COLUMN_NAME=memberOf STATUS=DBSTATUS_E_CANTCONVERTVALUE], [COLUMN_NAME=sAMAccountName STATUS=DBSTATUS_S_OK]].
Msg 7346, Level 16, State 2, Line 2
Could not get the data of the row from the OLE DB provider 'ADSDSOObject'. Could not convert the data value due to reasons other than sign mismatch or overflow.
Looks like this is a limitation that cannot be directly overcome: - TSQL: How to get a list of groups that a user belongs to in Active Directory. OpenQuery cannot handle multi-valued attributes.
I ended up writing a .NET CLR job to handle this.

Resources