Dr. Thomas Oden, A theologian who made made no new contribution to theology

Who is Thomas Clark Oden?


Thomas Clark Oden was an American United Methodist theologian and religious author. He is often regarded as the father of the paleo-orthodox theological movement and is considered to be one of the most influential theologians of the 20th century and the beginning of the 21st century.

Quotes & Works

  1. “The heart of my story is that the first part of 40 years of my life, I was way, way out there on a path that I had to go on in order to come back like the prodigal son to the father,” Oden told Al Mohler, president of Southern Baptist Theological Seminary, in a 2015 interview. “But eventually I did and by my 40th year, I became deeply invested in listening carefully to the classical Christian consensus … of the ancient Christian writers and their interpretation of Scripture.”
  2. On Passing
    • Mark Tooley, Institute on Religion & Democracy president
      • “Tom is now with the early saints whose lives and teachings he studied so closely,” said Institute on Religion & Democracy president Mark Tooley, who called him “a dear friend and counselor, a brilliant and cheerful warrior for good causes, irreplaceable.
    • Russell Moore, president of the Ethics and Religious Liberty Commission
      • “What a loss to us all is the death of [Oden]. He is a hero of orthodox conviction,” tweeted Russell Moore, president of the Ethics and Religious Liberty Commission.
  3. Paleo-orthodox
    • Fred Sanders
      • Fred Sanders, theology professor at Biola University, remembered Oden as a “paleo-orthodox champion of the classic, consensual Christian tradition.”
    • Michael Patton, Credo House

      • Oden coined the term paleo-orthodox, explained here ,  here by Credo House’s C. Michael Patton as:

        • This is the belief that the Christian faith can be found in the consensual beliefs of the church. This is a form of “consensual orthodoxy” (consensus fidelium). This search for consensus follows the dictum of Saint Vincent of L’rins: quod ubique, quod semper, quod ab omnibus, “that which was believed everywhere, always.” Normally, according to Thomas Oden, who coined the term “paleo-orthodoxy,” this consensual faith can be found in the first five centuries of the Christian church (Oden, Requiem: A Lament in Three Movements), before the “speculative scholasticism” of western Catholicism. The idea of theological progression is normally thought by strict adherents of Paleo-Orthodoxy as a post-enlightenment influenced methodology that should not be followed.

  4. Prolific
    • Oden wrote and edited hundreds of books, articles, and essays and gave speeches on such topics as church and the world, church controversies, evangelicalism, Kierkegaard, the Methodist church, church discipline, John Wesley, postmodernism, and others. His first volume with InterVarsity Press was Two Worlds (1992), which discussed the dichotomy of perishing modernity and emerging post modernity, and their impact on Christianity. He quickly followed this with the launch of the [ACCS] in 1998, forever changing the face of IVP’s publishing program.
  5. Association of Classical and Christian Schools

    • J. I. Packer

      • The ACCS’s patristics exposition was praised by Packer as “badly needed for several centuries, and the whole Christian world should unite to thank those who are undertaking to fill the gap.”
    • Joel Scandrett, director of the Robert E. Webber Center at the Trinity School for Ministry

      • One of Oden’s many former students, Joel Scandrett, director of the Robert E. Webber Center at the Trinity School for Ministry, said the theologian “passed on to me and generations of students his great love of the Triune God and the ancient legacy of patristic exegetical and trinitarian theology.

      • “His lifetime of work,” said Scandrett, “reveals that Christians need to rely upon the wisdom of the historical church, particularly the early church, rather than exclusively on modern scholarship and theology.”

  6. He made no new contribution to theology
    • Oden told CT in 1990 that he dreamed his epitaph would read: He made no new contribution to theology. He said:
      • In my dream I was extremely pleased, for I realized I was learning what Irenaeus meant when he warned us not to invent new doctrine. This was a great discovery for me. All my education up to this point had taught me that I must be compulsively creative. If I was to be a good theologian I had to go out and do something nobody else ever had done. The dream somehow said to me that this is not my responsibility, that my calling as a theologian could be fulfilled through obedience to apostolic tradition.


  1. Dr. Thomas Oden, author of How Africa Shaped the Christian Mind
    • Profile
      • Dr. Tom Oden, author of How Africa Shaped the Christian Mind, speaks with Dr. Jerry Pattengale of The Green Scholars Initiative about the role of Africa in the early Church
    • Videos
      • Video #1
        Channel :- InterVarsity Press
        Published On :- 2014-Jan-6th
  2. Libyan Christianity 1: A Libyan History Awaiting Discovery – Thomas C. Oden
    • Profile
      • Thomas Oden, professor of Theology Emeritus, Drew University; General Editor, Ancient Christian Commentary on Scripture, explores historical Christianity by means of understanding the ancient culture and historical underpinnings of the people of Libya.
    • Videos
      • Video #1
        Channel :- Dallas Theological Seminary
        Published On :- 2012-July-27th

In depth

Dr. Thomas Oden, author of How Africa Shaped the Christian Mind

  1. 215 to 230 AD
  2. Christians in Palestine
  3. Intellectual Energy from South to North

Libyan Christianity 1: A Libyan History Awaiting Discovery – Thomas C. Oden

  1. Struggle of Rural Christianity
    • Conflict
      • North South Conflict
      • East west conflict
      • Christian/Islam Conflict
    • Undercurrent
      • Visa
      • Lockerbie
  2. Archbishop
  3. Socialism


  1. Wikipedia
    • Thomas C. Oden


BitLocker – Configuration – Error – “Unable to find the Reporting Services instance name”


Recently we ran into an “ha ha” moment installing Microsoft BitLocker.


BitLocker Administration and Monitoring

Configuring Reports

Here is the “Configuring Reports” window.



Error Image


Error Text

Unable to find the Reporting Services instance name <server-name>\MSSQLServer

Trouble Shooting

Reporting Services Configuration Tool ( RSConfigTool )

Launched SQL Server Reporting Services Configuration Tool ( RSConfigTool).


Ensured that the service is running and noted the Instance ID.

The Instance ID is SSRS.


BitLocker Administration and Monitoring

Configuring Reports

For the instance name, please note the instance name recorded earlier.

That instance name is SSRS.

Configuration SSRSDB.20180720_1041AM



Sapien – WMI Explorer – Reporting Services Configuration Manager


Wanted to utilize another WMI Query tool in addition to Microsoft’s own WMI tools.




SQL Server Reporting Services (SSRS) – Error – “Invalid Class”

In the “SQL Server Reporting Services (SSRS) – Error – Invalid Class” post, we bemoaned the difficulty of fully espousing our wilderness experience based on screenshots from a single tool; that tool being Microsoft WMI Explorer.

The post is here.

Microsoft’s WMI Explorer is available at Codeplex and here is the specific URL.



We wanted to try out one more tool and the one we chose is Sapien WMI Explorer.


Please download WMI Explorer from here.

The current version is 2.2.74.


  1. OS Version
    • Desktop :- Windows 7 / Windows 8 / Windows 8.1 / Windows 10
    • Server :- Windows Server 2008 R2 / Windows Server 2012 / Windows Server 2012 R2
  2. OS Bitness
    • 32 and 64 bit
  3. Powershell
    • Version :- Powershell Version 3.0
  4. Visual Studio 2012 Runtime



Installation is straightforward.


Connect to the Vendor’s web site and request a trial key.



Launch Sapien’s WMI Explorer and navigate the Class Browser tree.

As one chooses a specific Namespace, the classes and corresponding properties and methods for that class are shown in the right window.

We are interested in SQL Server Namespace and specifically the ReportServer space.

Please click on the Query button on the Ribbon Tab to view and edit queries.


Pasted below are the images captured from our journey.


Hierarchy – \\<Host>\ROOT\Microsoft\SqlServer

Hierarchy – \\<Host>\ROOT\Microsoft\SqlServer\ReportServer

Hierarchy – \\<Host>\ROOT\Microsoft\SqlServer\ReportServer\<Instance>
Instance – Default

Instance – DATACAP


Hierarchy – \\<Host>\ROOT\Microsoft\SqlServer\ReportServer\<Instance>\<Version>
Instance – {RS_DATACAP }\ Version {v12}

Instance – {RS_DATACAP }\ Version {v12} – Custom Query

Instance – {RS_DATACAP }\ Version {v12} – Query Results

Hierarchy – \\<Host>\ROOT\Microsoft\SqlServer\ReportServer\<Instance>\<Version>\Admin
Instance – {RS_DATACAP }\ Version {v12} \ Admin – Custom Query

Instance – {RS_DATACAP }\ Version {v12} \ Admin – Query Results


WMI – Reporting Services Configuration Manager – Event Viewer


When troubleshooting Reporting Services Configuration Manager WMI calls it can be useful to see whether WMI activities are occurring.



Event Viewer

Enable Log

WMI calls are logable in the Event Viewer.

But, they are not logged by default.

To enable logging please follow the steps listed below:

Obtaining WMI Events Through Event Viewer

  1. Open Event Viewer. On the View menu, click Show Analytic and Debug Logs
  2. Locate the Trace channel log for WMI under Applications and Service Logs | Microsoft | Windows | WMI Activity
  3. Right-click the Trace log and select Log Properties. Click the Enable Logging check box to start the WMI event tracing
  4. WMI events appear in the event window for WMI-Activity. Double-click an event in the list to see the detailed information. You can view an event in XML View or in Friendly View format.

Logged Events


# Event
1 GroupOperationId = 159602; OperationId = 159602; Operation = IWbemServices::Connect; ClientMachine = QADB; User = dadeniji.adeniji; ClientProcessId = 5024; NamespaceName = \\QA\root\Microsoft\SqlServer\ReportServer
2 GroupOperationId = 159603; OperationId = 159604; Operation = Start IWbemServices::CreateInstanceEnum – __NAMESPACE; ClientMachine = QADB; User = daniel.adeniji; ClientProcessId = 5024; NamespaceName = \\.\root\Microsoft\SqlServer\ReportServer
3 GroupOperationId = 159605; OperationId = 159605; Operation = IWbemServices::Connect; ClientMachine = QADB; User = daniel.adeniji; ClientProcessId = 5024; NamespaceName = \\QADB\root\Microsoft\SqlServer\ReportServer\RS_DATACAP\v12\Admin
4 GroupOperationId = 159606; OperationId = 159607; Operation = Start IWbemServices::CreateInstanceEnum – MSReportServer_ConfigurationSetting; ClientMachine = QADB; User = daniel.adeniji; ClientProcessId = 5024; NamespaceName = \\.\root\Microsoft\SqlServer\ReportServer\RS_DATACAP\v12\Admin
5 ProviderInfo for GroupOperationId = 159606; Operation = Provider::CreateInstanceEnum – MSReportServer_ConfigurationSetting; ProviderName = ReportingServicesWMIProvider; ProviderGuid = {0A0B6A3E-DAA2-4ED9-A603-B1C4ED9515FF}; Path = C:\Program Files (x86)\Microsoft SQL Server\120\Shared\reportingserviceswmiprovider.dll



  1. Event #1 :- IWebServices Create Instance Enum
    • NamespaceName :- \\QA\root\Microsoft\SqlServer\ReportServer
  2. Event #2 :- IWebServices Create Instance Enum
    • NamespaceName :- \\.\root\Microsoft\SqlServer\ReportServer
  3. Event #3 :- IWebServices Connect
    • NamespaceName :- \\.\root\Microsoft\SqlServer\ReportServer\RS_DATACAP\v12\Admin
  4. Event #4 :- IWebServices Instance Enumerate
    • NamespaceName :- \\.\root\Microsoft\SqlServer\ReportServer\RS_DATACAP\v12\Admin
  5. Event #5 :- Com Object Instantiated
    • COM Object ID :- 0A0B6A3E-DAA2-4ED9-A603-B1C4ED9515FF
    • COM File :- C:\Program Files (x86)\Microsoft SQL Server\120\Shared\reportingserviceswmiprovider.dll



From logging WMI Calls we are able to see the inner workings of the WMI Provider class and IWbemServices interface.

In the case of Sql Server Reporting Services (SSRS) it is an version specific dll ( C:\Program Files (x86)\Microsoft SQL Server\120\Shared\reportingserviceswmiprovider.dll ).

SQL Server – Error – “The CREATE UNIQUE INDEX statement terminated because a duplicate key was found for the object name ‘dbo.sysowners’ and the index name ‘nc1’. The duplicate key value”



Trying to add Reporting Services to an existing SQL Server v2014 Install this afternoon, and finally ran into a problem that is worthy of talking about.



We are on MS SQL Server 2014 Standard Edition

  1. Added Reporting Services to an existing install
  2. And, now going through the Change Database Steps
    • Specifically, the Progress and Finish Step
    • While processing the SQL Code within the “Running database script” step, we ran into an Error






Here is the error message

Error Image


Error Text


System.Data.SqlClient.SqlException: The CREATE UNIQUE INDEX statement terminated because a duplicate key was found for the object name 'dbo.sysowners' and the index name 'nc1'. The duplicate key value is (spotlight).
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
   at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async)
   at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)
   at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   at Microsoft.ReportingServices.Common.DBUtils.ApplyScript(SqlConnection conn, String script, ICommandWrapperFactory commandWrapper)
   at Microsoft.ReportingServices.Common.DBUtils.ApplyScript(String connectionString, String script)
   at ReportServicesConfigUI.SqlClientTools.SqlTools.ApplyScript(String connectionString, String script)



SQL Server Profiler

Ran SQL Server Profiler and captured the error pasted below:






The create unique Index Statement terminated because a duplicate key was found for the object ‘dbo.sysowners’ and the index named ‘nc1’.  
The duplicate key value is (spotlight).



Knowing that msdb is the foundational database took a look at it.



use [msdb]

select *

from   sysusers tblSU

--where  lower(tblSU.[name]) like '%spot%'

order by 






  1. In the msdb database
    • We have two distinct users Spotlight and spotlight
    • This is possible as out server collation


Validate Server Collation


print 'Collation: ' + cast( serverproperty('collation') as varchar(60))




Validate Database ( msdb ) Collation


print 'Collation - SQL Instance: ' + cast( serverproperty('collation') as varchar(60))

print 'Collation - Database - msdb - ' + CONVERT (varchar, DATABASEPROPERTYEX('msdb','collation'));  

print 'Collation - Database - ReportServer - ' + CONVERT (varchar, DATABASEPROPERTYEX('ReportServer','collation'));  

print 'Collation - Database - ReportServerTempdb - ' + CONVERT (varchar, DATABASEPROPERTYEX('ReportServerTempDB','collation'));  





  1. On our embryonic database, msdb, it is OK to have users whose name only vary based on case
    • BTW, for this server whose collation is binary, case materializes
  2. But, on new to become database which is case-insensitive, it is not OK




To me it is a cute problem, but don’t ask my lover

As, she is the only one who makes herself pretty for me

Bellamy Brothers
Let Your Love Flow

Microsoft Connect

Opened up a Connect Item

  1. Title :- Reporting Services – Configuration – Index Creation error on table dbo.sysowners – The index name nc1
    ID :- 3120021
    Date Created :- 2107-Jan-30th
    Status :- Active

SQL Server – Reporting Services – Invoking from .Net Application – Permission Errors


We have provisioned Microsoft SQL Server Reporting Services and now testing it out by having a .Net Application connect to it, ask for a report to be ran and consume the report.



There are two sets of errors that we will look at.

We will like at both the errors that are exposed on the .Net Client code and the ones logged on the server.


.Net Client Error

  1. The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later


Reporting Services Back End Error

There are a couple of growing pains that we are experiencing and those are:

  1. Execute permission denied on the Object
  2. Permissions granted to user are insufficient for performing the operation



Error – Execute Permission on Stored Procedure




webserver!ReportServer_0-5!20f0!01/24/2017-12:48:37:: i INFO: Processed folder ‘/ASSIST’
processing!ReportServer_0-5!20f0!01/24/2017-12:48:42:: e ERROR: Throwing Microsoft.ReportingServices.ReportProcessing.ReportProcessingException: , Microsoft.ReportingServices.ReportProcessing.ReportProcessingException: Query execution failed for dataset ‘InstitutionList’. —> System.Data.SqlClient.SqlException: The EXECUTE permission was denied on the object ‘rptInstitutionList’, database ‘AssistDW’, schema ‘dbo’.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
 processing!ReportServer_0-5!20f0!01/24/2017-12:48:42:: e ERROR: An exception has occurred in data set ‘InstitutionList’. Details: Microsoft.ReportingServices.ReportProcessing.ReportProcessingException: Query execution failed for dataset ‘InstitutionList’. —> System.Data.SqlClient.SqlException: The EXECUTE permission was denied on the object ‘rptInstitutionList’, database ‘AssistDW’, schema ‘dbo’.
 processing!ReportServer_0-5!20f0!01/24/2017-12:48:42:: i INFO: DataPrefetch abort handler called for Report with ID=. Aborting data sources …
processing!ReportServer_0-5!20f0!01/24/2017-12:48:42:: e ERROR: Throwing Microsoft.ReportingServices.ReportProcessing.ProcessingAbortedException: , Microsoft.ReportingServices.ReportProcessing.ProcessingAbortedException: An error has occurred during report processing. —> Microsoft.ReportingServices.ReportProcessing.ReportProcessingException: Query execution failed for dataset ‘InstitutionList’. —> System.Data.SqlClient.SqlException: The EXECUTE permission was denied on the object ‘rptInstitutionList’, database ‘AssistDW’, schema ‘dbo’.




Grant select and execute permission on the specific Objects or Schema.


use [AssistDW]; GRANT EXECUTE on  SCHEMA :: [dbo] to [LAB\svcMarketing];
use [AssistDW]; GRANT SELECT  on  SCHEMA :: [dbo] to  [LAB\svcMarketing];

Error – Call to GetSystemPropertiesAction() :: Permissions granted to user ‘WebPoolUsr‘ are insufficient for performing this operation.



library!ReportServer_0-11!263c!01/25/2017-12:24:07:: e ERROR: Throwing Microsoft.ReportingServices.Diagnostics.Utilities.AccessDeniedException: , Microsoft.ReportingServices.Diagnostics.Utilities.AccessDeniedException: The permissions granted to user ‘LAB\WebAppPool’ are insufficient for performing this operation.;






In our case, we granted permission at the Report Manager Home Level, but it was broken at the specific folder level

Broken Permission

Only the BUILTIN\Administrators have permission at the ASSIST Folder Level



Revert to Parent Security

We chose to revert to the Parent Security.

Previously, we validated that things was good at the Parent Level.


After Reverting



Google Drive – Google Sheets – Pasting Tables



We all take for granted how seamlessly Microsoft Products work together.

Take for instance, I use Microsoft SQL Server Management Studio to run a query and I will like to prepare a document from the query’s result.

I simply copy the Output Grid’s content, launch Microsoft Word or Excel, and pasted it.

Through the magic of OLE or whatever they call it these days, the data is well received and formatted in the receiving Office App.


Google Drive

These days my main sharing tool is WordPress for public consumption and Google Docs for private data.


Here is the genesis of our Problem

SQL Server Management Studio ( SSMS )


Here is output of a query I ran in SSSM



  1. Nice and visually appealing for an Engineer


Google Drive – Google Docs

Here is what things look like when pasted into Google Docs..



What to do

  1. Looked for Convert to Table
  2. Insert Text as table
  3. Import Text


Nothing helpful.


Solution – 01

Google Drive – Google Sheets

Created a new file, rather than Document went with Sheets




  1. Making progress
    • Kept the grid or columns paradigm
    • That is things are not jumbled well, with text intertwined together


Google Drive – Copy From Google Sheets Into Google Docs

Here we copied the cells from Google Sheets Into our original Google Docs




  1. Thankfully things are kept neatly arranged in a Columns
  2. Need to get rid of some extra columns and that is doable


Google Drive – Google Docs – Table – Delete Extra Columns

Got rid of the extra columns using the menu item Table / Delete Columns.


  1. Inside the Google Doc
  2. Select the extra columns
  3. And, use menu item Table / Delete Columns



Format the Table

One of the great things about these Google Products such as Chrome and Google Drive is that they are extensible and have such a nice and rich 3rd party ecosystem.


Adds On

Table Formatter

I already have Table Formatted installed and so let us initiate it by accessing Google Docs menu items “Add-ons” \ “Table Formatter”.


Google Docs – Menu – Add-Ons



Add-On – Table Formatter – Default Templates

Here are some of the Default Templates available


Customize Table with Add-On – Table Formatter

Select the Google Docs’s tale and choose the one of the Formatting Choices.

Here is our colored layout.




  1. Copy SSMS Grid Data into Clipboard
  2. Create a new Google Sheet ou use existing one
    • Paste copied into Sheet
  3. Create a new Google Doc
    • Select data from Google Sheet
    • Copy into Clipboard
    • And, paste into Google Doc
  4. In Google Docs
    • Using 3rd Party Add Ons such as Table Formatter format Table

Solution – 02


  1. Copy SSMS Grid output into Clipboard
  2. Use Microsoft Excel
    • Launch Microsoft Excel
    • Copy Grid’s data into Excel
    • If you like the way Excel Formats Table, use Excel’s Table Formatting functionality
      • Using F8, make Sheet’s column into actual table
        • Be sure you have Column Headers and all
  3. Create or use New Google Docs
    • Copy Table’s content from MS Excel
    • Paste into Google Doc


In MS SSMS, Copying with Headers




In MS Excel, Pasted SSMS Grid



In MS Excel, Create Table

Here is the panel displayed upon clicking on F8 and thus initiating the “Create Table” options



  1. Please pay attention to the “My table has headers” option


In MS Excel, Formatted Table