예제 #1
0
        private void CopyTableTest(string connStr, string sourceTable, string targetTable, string expectedResults)
        {
            using (SqlConnection srcConn = new SqlConnection(connStr))
            {
                srcConn.Open();

                SqlCommand cmd = srcConn.CreateCommand();

                cmd.CommandText = "select * from " + sourceTable;
                using (SqlDataReader reader = cmd.ExecuteReader())
                    using (SqlBulkCopy bc = new SqlBulkCopy(connStr))
                    {
                        bc.DestinationTableName = targetTable;
                        bc.WriteToServer(reader);
                    }
                cmd.CommandText = "select * from " + targetTable;

                DataTestUtility.AssertEqualsWithDescription(
                    expectedResults, UdtTestHelpers.DumpReaderString(cmd.ExecuteReader()),
                    "Unexpected bulk copy results.");
            }
        }
예제 #2
0
        public void Dispose()
        {
            // Do NOT remove certificate for concurrent consistency. Certificates are used for other test cases as well.
            SqlConnectionStringBuilder sb = new SqlConnectionStringBuilder(DataTestUtility.TcpConnStr);

            using (SqlConnection conn = CertificateUtility.GetOpenConnection(false, sb))
            {
                using (SqlCommand cmd = new SqlCommand($"drop table {encryptedTableName}", conn))
                {
                    cmd.CommandType = CommandType.Text;
                    cmd.ExecuteNonQuery();

                    cmd.CommandText = $"drop procedure {encryptedProcedureName}";
                    cmd.ExecuteNonQuery();
                }
            }

            // Only use traceoff for non-sysadmin role accounts, Azure accounts does not have the permission.
            if (DataTestUtility.IsNotAzureServer())
            {
                CertificateUtility.ChangeServerTceSetting(true, sb);
            }
        }
        public EnclaveAzureDatabaseTests()
        {
            if (DataTestUtility.IsEnclaveAzureDatabaseSetup())
            {
                sqlColumnEncryptionAzureKeyVaultProvider = new SqlColumnEncryptionAzureKeyVaultProvider(new SqlClientCustomTokenCredential());
                if (!SQLSetupStrategyAzureKeyVault.IsAKVProviderRegistered)
                {
                    SQLSetupStrategyAzureKeyVault.RegisterGlobalProviders(sqlColumnEncryptionAzureKeyVaultProvider);
                }

                akvColumnMasterKey = new AkvColumnMasterKey(DatabaseHelper.GenerateUniqueName("AKVCMK"), akvUrl: DataTestUtility.AKVUrl, sqlColumnEncryptionAzureKeyVaultProvider, DataTestUtility.EnclaveEnabled);
                databaseObjects.Add(akvColumnMasterKey);

                akvColumnEncryptionKey = new ColumnEncryptionKey(DatabaseHelper.GenerateUniqueName("AKVCEK"),
                                                                 akvColumnMasterKey,
                                                                 sqlColumnEncryptionAzureKeyVaultProvider);
                databaseObjects.Add(akvColumnEncryptionKey);

                SqlConnectionStringBuilder connString1 = new SqlConnectionStringBuilder(DataTestUtility.EnclaveAzureDatabaseConnString);
                connString1.InitialCatalog = "testdb001";

                SqlConnectionStringBuilder connString2 = new SqlConnectionStringBuilder(DataTestUtility.EnclaveAzureDatabaseConnString);
                connString2.InitialCatalog = "testdb002";

                connStrings.Add(connString1.ToString());
                connStrings.Add(connString2.ToString());

                foreach (string connString in connStrings)
                {
                    using (SqlConnection connection = new SqlConnection(connString))
                    {
                        connection.Open();
                        databaseObjects.ForEach(o => o.Create(connection));
                    }
                }
            }
        }